Составители:
19
выполнения того или иного условия является одной из популярнейших структур-
ных конструкций при написании программ на большинстве языков программиро-
вания. Не стал исключением и язык командных файлов. Для организации перехо-
да по условию здесь может быть использована команда if. Ниже представлены все
возможные варианты вызова этой команды.
if [/i] [not] строка1==строка2 команда [else команда]
if [not] errorlevel число команда [else команда]
if [not] exist имя_файла команда [else команда]
if [/i] строка1 оп_сравнения строка2 команда [else команда]
if cmdextversion число команда [else команда]
if defined переменная команда [else команда]
Первый вариант операции сравнения позволяет выполнить команду в зави-
симости от совпадения или несовпадения двух строк (которые могут быть пред-
ставлены и переменными). Например, так мы можем предотвратить запуск ко-
мандного файла без параметров:
@echo off
if -%1 == - goto :eof
…
При сравнении с использованием переменных всегда необходимо учиты-
вать возможный вариант отсутствия переменной с указанном имени в текущем
контексте командного окна. Например, если командный файл запущен без пара-
метров, то переменная %1 будет не определена, и на этапе выполнения безобид-
ная на первый взгляд конструкция
if %1 == /h goto help
приведет к ошибке из-за отсутствия левого операнда в операторе сравнения. По-
этому рекомендуется использовать в правой и левой части операции сравнения
какой-нибудь дополнительный символ, например '-' (или заключать сравниваемые
объекты в кавычки).
Второй вариант команды if опирается на результат выполнения предыду-
щей команды. Здесь необходимо учесть, что в результате своего выполнения ко-
манды Windows выставляют переменную окружения errorlevel в значение кода
своего завершения. Общепринято, что код завершения 0 соответствует успешно-
му завершению команды, а 1 и более – неудачному завершению (например, ниче-
го не найдено командой find, команда ping не получила ответ на запрос, команда
del не смогла удалить файл и т.п.) и анализ значения переменной дает возмож-
ность выполнить различные действия, например, при успешном или неуспешном
выполнении предшествующей команды:
ping www.volpi.ru >nul
if %errorlevel% 1 (
echo %date% %time% Нет связи с сайтом www.volpi.ru>> report.txt
ipconfig /all >>report.txt
)
Приведенный выше пример иллюстрирует возможность выполнения не-
скольких команд в случае выполнения (или невыполнения) заданного условия.
Для группировки команд используются круглые скобки.
Если алгоритм работы командного файла предусматривает переход в слу-
выполнения того или иного условия является одной из популярнейших структур- ных конструкций при написании программ на большинстве языков программиро- вания. Не стал исключением и язык командных файлов. Для организации перехо- да по условию здесь может быть использована команда if. Ниже представлены все возможные варианты вызова этой команды. if [/i] [not] строка1==строка2 команда [else команда] if [not] errorlevel число команда [else команда] if [not] exist имя_файла команда [else команда] if [/i] строка1 оп_сравнения строка2 команда [else команда] if cmdextversion число команда [else команда] if defined переменная команда [else команда] Первый вариант операции сравнения позволяет выполнить команду в зави- симости от совпадения или несовпадения двух строк (которые могут быть пред- ставлены и переменными). Например, так мы можем предотвратить запуск ко- мандного файла без параметров: @echo off if -%1 == - goto :eof … При сравнении с использованием переменных всегда необходимо учиты- вать возможный вариант отсутствия переменной с указанном имени в текущем контексте командного окна. Например, если командный файл запущен без пара- метров, то переменная %1 будет не определена, и на этапе выполнения безобид- ная на первый взгляд конструкция if %1 == /h goto help приведет к ошибке из-за отсутствия левого операнда в операторе сравнения. По- этому рекомендуется использовать в правой и левой части операции сравнения какой-нибудь дополнительный символ, например '-' (или заключать сравниваемые объекты в кавычки). Второй вариант команды if опирается на результат выполнения предыду- щей команды. Здесь необходимо учесть, что в результате своего выполнения ко- манды Windows выставляют переменную окружения errorlevel в значение кода своего завершения. Общепринято, что код завершения 0 соответствует успешно- му завершению команды, а 1 и более – неудачному завершению (например, ниче- го не найдено командой find, команда ping не получила ответ на запрос, команда del не смогла удалить файл и т.п.) и анализ значения переменной дает возмож- ность выполнить различные действия, например, при успешном или неуспешном выполнении предшествующей команды: ping www.volpi.ru >nul if %errorlevel% 1 ( echo %date% %time% Нет связи с сайтом www.volpi.ru>> report.txt ipconfig /all >>report.txt ) Приведенный выше пример иллюстрирует возможность выполнения не- скольких команд в случае выполнения (или невыполнения) заданного условия. Для группировки команд используются круглые скобки. Если алгоритм работы командного файла предусматривает переход в слу- 19
Страницы
- « первая
- ‹ предыдущая
- …
- 17
- 18
- 19
- 20
- 21
- …
- следующая ›
- последняя »