Передача управления содержащей метку строке пакетного файла

GOTO метка

метка - Строка пакетного файла, оформленная как метка.

Метка должна находиться в отдельной строке и начинаться с двоеточия.

Изменение команды GOTO при включении расширенной обработки команд:

Команда GOTO принимает в качестве метки перехода строку :EOF, которая вызывает передачу управления в конец текущего пакетного файла. Это позволяетлегко выйти из пакетного файла без определения каких-либо меток. Команда CALL /? выводит описание расширенных возможностей команды CALL, делающих эту Функцию особенно полезной.

Оператор условного выполнения команд в пакетном файле

IF [NOT] ERRORLEVEL число команда

IF [NOT] строка1==строка2 команда

IF [NOT] EXIST имя_файла команда

NOT Обращает истинность условия: истинное условие становится ложным, а ложное - истинным.
ERRORLEVEL число Условие является истинным, если код возврата последней выполненной программы не меньше указанного числа.
Команда Команда, которую следует выполнить в случае истинности условия.
строка1== строка2 Это условие является истинным, если указанные строки совпадают.
EXIST имя_файла Это условие является истинным, если файл с указанным именем существует.

Изменение команды IF при включении расширенной обработки команд:

IF [/I] строка1 оператор_сравнения строка2 команда

IF DEFINED переменная команда где оператор_сравнения принимает следующие значения:

EQL - равно

NEQ - не равно

LSS - меньше

LEQ - меньше или равно

GTR - больше

GEQ - больше или равно

а ключ /I, если он указан, задает сравнение текстовых строк без учета регистра. Ключ /I можно также использовать и в форме строка1==строка2 команды IF. Сравнения проводятся по общему типу данных, так что если строки 1 и 2 содержат только цифры, то обе строки преобразуются в числа, после чего выполняется сравнение чисел.

Условие DEFINED применяется подобно условию EXISTS, но принимает в качестве аргумента имя переменной среды и возвращает истинное значение, если эта переменная определена.

Строка %ERRORLEVEL% будет развернута в строковое представление текущего значения кода ошибки ERRORLEVEL, за исключением ситуации, когда уже имеется переменная среды с именем ERRORLEVEL; в подобном случае подставляется значение этой переменной. Например, с помощью данной строки можно выполнить следующее:

choice

goto answer%ERRORLEVEL%

:answer0

echo Введено Y (да)

:answer1

echo Введено N (нет)

Приостановка выполнения пакетного файла и вывод сообщения: «Для продолжения нажмите любую клавишу . . .»

PAUSE

Помещение комментариев в пакетные файлы

REM [текст]

Изменение содержимого (сдвиг) подставляемых параметров для пакетного файла

SHIFT [/n]

Команда вызывает уменьшение на единицу номеров, соответствующих всем позиционным параметрам. Бывший параметр %0 перестает быть доступным, параметр %1 становится параметром %0 и т.д.

Если при вызове пакетного файла было указано больше 9 параметров, то "лишние" параметры становятся доступными после одной или нескольких команд SHIFT, когда их номера попадают в диапазон %0 - %9.

Основное применение команды SHIFT - организация цикла по неизвестному заранее числу параметров командной строки. Условием окончания цикла может быть пустота очередного параметра.

Команда SHIFT при включении расширенной обработки команд поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть от 0 до 9.

Порядок выполнения работы

Лабораторная работа выполняется в лаборатории, оснащенной компьютерами с установленной ОС Windows. Студенты получают задание на написание пакетных файлов, изучают команды консольного режима по приведенному описанию, осваивают применение команд на практике, пишут и отлаживают пакетный файл, готовят отчет.

Отчет о лабораторной работе оформляется на бумаге в печатном или рукописном виде. На титульном листе указывается название работы и состав бригады. В отчете приводится формулировка задания, а также тексты разработанных пакетных файлов с необходимыми пояснениями.

Когда студенты готовы к сдаче работы, преподаватель дает им 2-3 задания на применение команд в диалоговом режиме, проверяет выполнение заданий, а затем проверяет отчет. При выполнении заданий разрешается пользоваться данным описанием, другой литературой или справочной системой Windows. Преподаватель может задать дополнительные вопросы, выясняя уровень освоения системы команд.

Не требуется заучивание наизусть всех описанных команд и тем более их ключей, более важно понимание основ консольного режима и умение быстро найти требуемую информацию в справочной системе.

Пример выполнения лабораторной работы

Задание. Написать и отладить пакетный файл, который получает в качестве параметров одно или несколько расширений имени файла и для каждого файла в текущем каталоге, имеющего одно из заданных расширений, выполняет одно из трех действий по выбору пользователя: удаляет файл, выдает его порциями на экран или пропускает без обработки.

Решение. Для выполнения поставленного задания можно использовать два приведенных ниже пакетных файла.

Файл Laba.bat:

@echo off

:loop

if (%1)==() goto Exit

for %%i in (*.%1) do call DoIt %%i

Shift

Goto loop

:Exit

Файл DoIt.bat:

choice /C:УВП /N Файл %1 (У - удалить, В - выдать, П - пропустить):

If errorlevel 3 goto Exit

If errorlevel 2 goto Type

w:st="on"del %1

Goto Exit

:Type

type %1 | more

:Exit

Задания на лабораторную работу.

1. Написать и отладить пакетный файл, который получает в качестве параметров дату, находит все файлы в каталоге с датой создания равной указной датой и выполняет действие по выбору пользователя: архивация файлов, удаление файлов. Информация о производимой операции должна выдаваться на экран.

2. Написать и отладить пакетный файл, который выдает перечень файлов из указанных пользователем каталогов удовлетворяющих условию: скрытый и системный. Выполняет с файлами операции: убрать скрытые и убрать системные.

3. Написать и отладить пакетный файл, который для всех файлов из указанного каталога создает подкаталоги с именем равной дате создания файла и переносит в эти каталоги файлы с указанной датой создания.

4. Написать и отладить пакетный файл, который по выбору пользователя переносит в архив или все файлы из каталога, формируя имя архива указанное пользователем, или всех каталогов. При этом не должно получаться вложенных архивов.

5. Написать и отладить пакетный файл, который по выбору пользователя будет завершать работу процессов.

6. Создать задание которое будет запускаться каждые 2-4-8-16 и. т. д. минут.

7. Написать и отладить пакетный файл, который по выбору даты пользователем будет архивировать все файлы в каталоге и подкаталогов двухнедельной давности.

8. Создать задание которое выведет список процессов компьютера занимающих от 1МБ до 10 МБ памяти.

9. Создать задание которое выведет список файлов начинающихся на s и созданных не позднее указанной пользователем даты.

10. Создать задание которое добавляет файлы из каталога к архиву текущей недели. Архивы более недели должны быть перенесены в другой каталог.

11. Создать задание которое при изменении размера файла, произведет его архивацию.

12. Создать назначенное задание реализующее следующий механизм создания резервного копирования данных в каталоге.

Данные представлены виде набора лог файлов и имеют расширения .log. Формат имени файла YYYYMMDD.log, где YYYY – год лог файла, MM- месяц, DD – день лог файла.

Необходимо ежедневно архивировать лог файлы с датой ранее 3 дней от текущей даты. Лог файлы должны создаваться по принципу:

1. Если не прошел месяц, то файлы просто архивируются за каждую дату и остаются в каталоге с логами

2. Если прошло более месяца и 3 дня, то все файлы за прошлый месяц должны быть с архивированы в один файл и переписаны в другой каталог.

3. Файлы за последние 3 дня не подлежат архивации.

4. * - Логи за субботу и воскресенье хранятся в отдельных файлах в отличие от всех остальных архивов.

Наши рекомендации