Задание 4. КомандыIf, Goto, Call




Обработка условий в пакетных файлах осуществляется командой If.

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

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

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

NOT Обращает истинность условия: истинное условие становится ложным, а ложное - истинным.

ERRORLEVEL число Условие является истинным, если код возврата последней выполненной программы не меньше указанного числа.

строка1==строка2 Это условие является истинным, если указанные строки совпадают.

EXIST имя_файла Это условие является истинным, если файл с указанным именем существует.

команда Задает команду, выполняемую при истинности условия. За этой командой может следовать ключевое слово ELSE, служащее для указания команды, которая должна выполняться в том случае, если условие ложно.

Предложение ELSE должно располагаться в той же строке, что и команда,

следующая за ключевым словом IF. Например:

I F EXIST имя_файла (

del имя_файла

) ELSE (

echo имя_файла missing.

)

Следующий пример содержит ОШИБКУ, поскольку команда del должна заканчиваться переходом на новую строку:

IF EXIST имя_файла del имя_файла ELSE echo имя_файла missing

Следующий пример также содержит ОШИБКУ, поскольку команда ELSE должна располагаться в той же строке, что и команда, следующая за IF:

IF EXIST имя_файла del имя_файла

ELSE echo имя_файла missing

Вот правильный пример, где все команды расположены в одной строке:

IF EXIST имя_файла (del имя_файла) ELSE echo имя_файла missing

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

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

IF CMDEXTVERSION число команда

IF DEFINED переменная команда

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

Таблица 7. Допустимые значения оn _ сравнения

  Оператор Описание Оператор Описание
EQU Равно LEQ меньше или равно
NEQ не равно GTR больше
LSS Меньше GEQ больше или равно

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

Условие CMDEXTVERSION применяется подобно условию ERRORLEVEL, но значение сравнивается с внутренним номером версии текущей реализации расширенной обработки команд. Первая версия имеет номер 1. Номер версии будет увеличиваться на единицу при каждом добавлении существенных возможностей расширенной обработки команд. Если расширенная обработка команд отключена, условие CMDEXTVERSION никогда не бывает истинно.

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

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

goto answer % ERRORLEVEL %

: answer0

echo Получен код возврата 0

: answer1

echo Получен код возврата 1

Допускается и применение описанных выше операторов числового сравнения:

IF %ERRORLEVEL% LEQ 1 gotookay

Строка % CMDCMDLINE % будет развернута в исходную командную строку, переданную CMD.EXE до любой обработки, за исключением ситуации, когда уже определена переменная среды с именем CMDCMDLINE, в подобном случае подставляется значение этой переменной.

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

Команда Goto

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

Синтаксис команды Goto:

Goto метка,

где параметр:

метка это строка в пакетной программе, на которую выполняется переход. В пакетном файле она должна начинаться с двоеточия (:). Если строка начинается с двоеточия, все присутствующие в ней команды обработаны не будут. Синтаксически она может включать пробелы, но не может включать другие разделители, такие как точка с запятой или знак равенства. При этом используются только первые восемь знаков метки (метки: hithere0, hithere01 и hithere02 воспринимаются интерпретатором команд как эквивалентные).

Если расширения командного интерпретатора разрешены и в команде Goto используется метка:Eof, управление будет передано в конец текущего пакетного файла для выхода из него без назначения метки. В синтаксис команды обязательно должно быть включено двоеточие (:), то есть Goto:Eof.

Дополнительная информация по данной команде, а также примеры ее использования доступны в справке ОС Windows XP (Пуск | Справка и поддержка) в соответствующем разделе. Справку также можно получить, набрав в окне командной оболочки строку Goto /? и нажав Enter для ввода.

Команда Call

Вызов одного пакетного файла из другого без завершения его выполнения осуществляется командой Call. Эта команда эквивалентна вызову процедуры из основного тела программы. Она принимает метки в качестве объекта вызова и используется только в сценариях или пакетных файлах; при вызове из командной строки команда Call игнорируется.

Синтаксис команды Call:

Call [[ диск:][ путь ] имя _ файла [ пакетные _ параметры ]] [: метка [ аргументы ]],

где параметр:

[ диск:][ путь ] имя _ файла — задает имя и расположение пакетного файла.

пакетные _ параметры — задает данные командной строки, используемые программой пакетной обработки, включая параметры командной строки, имена файлов, пакетные параметры (%0-%9) или переменные (например, %baud%).

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

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

Необходимо отметить, что при использовании команды Call символы перенаправления ввода-вывода и «каналы» не допускаются. Кроме того, может быть реализована подстановка переменных на основе модификаторов. При этом разрешаются все варианты синтаксических конструкций, приведенных в табл. 1и 2.

Дополнительная информация по данной команде, а также примеры ее использования доступны в справке ОС Windows XP (Пуск | Справка и поддержка) в соответствующем разделе. Справку также можно получить, набрав в окне командной оболочки строку Call /? и нажав Enter для ввода.

 

 

Содержание задания

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

1. Если не существует каталог d:\Temp\MyFont\, создайте его любым способом, изученным ранее. В противном случае выведите сообщение «Folderexists» (Каталог существует).

2. Если в каталоге d:\Temp\MyFont\ не существует файлов-шрифтов, скопируйте любые три одним из методов, изученных ранее, из системного каталога c:\Windows\Fonts\. В противном случае выведите сообщение «Fontsexist» (Шрифты присутствуют).

3. Если в каталоге d:\Temp\MyFont\ существует файлы, удалите каталог вместе с его содержимым, изученным ранее способом и выведите сообщение «Folderdeleted». В противном случае выведите сообщение «Folderisempty. Deletingissenseless» (Каталог пуст.Удаление бессмысленно).

При выполнении задания используйте следующие инструкции:

o по каждому из пунктов задания в командном файле наберите соответствующий код из команд с необходимыми ключами,

o сохраните модифицированный пакетный файл, воспользовавшись командой Start и указав путь к пакетному файлу,

o запустите его на выполнение, нажав Enter для ввода,

o изучите полученный результат и сделайте вывод о проделанной работе,

o запишите полученную информацию в отчет, заполнив табл. 8.

Таблица 8. Результаты выполнения команды If



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-04-04 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: