Проверка наличия переменной среды
Проверка существования заданного файла
Второй способ использования команды IF — это проверка существования заданного файла. Синтаксис для этого случая имеет вид:
IF [NOT] EXIST файл команда1 [ELSE команда2]Условие считается истинным, если указанный файл существует. Кавычки для имени файла не требуются. Приведем пример командного файла, в котором с помощью такого варианта команды IF проверяется наличие файла, указанного в качестве параметра командной строки.
@ECHO OFFIF -%1==- GOTO NoFileSpecifiedIF NOT EXIST %1 GOTO FileNotExist:: Вывод сообщения о найденном файлеECHO Файл '%1' найден.GOTO:EOF:NoFileSpecified:: Файл запущен без параметровECHO В командной строке не указано имя файла.GOTO:EOF:FileNotExist:: Параметр командной строки задан, но файл не найденECHO Файл '%1' не найден.Аналогично файлам команда IF позволяет проверить наличие в системе определенной переменной среды:
IF DEFINED переменная команда1 [ELSE команда2]Здесь условие DEFINED применяется подобно условию EXISTS наличия заданного файла, но принимает в качестве аргумента имя переменной среды и возвращает истинное значение, если эта переменная определена. Например:
@ECHO OFFCLSIF DEFINED MyVar GOTO:VarExistsECHO Переменная MyVar не определенаGOTO:EOF:VarExistsECHO Переменная MyVar определена,ECHO ее значение равно %MyVar%Еще один способ использования команды IF — это проверка кода завершения (кода выхода) предыдущей команды. Синтаксис для IF в этом случае имеет следующий вид:
IF [NOT] ERRORLEVEL число команда1 [ELSE команда2]Здесь условие считается истинным, если последняя запущенная команда или программа завершилась с кодом возврата, равным либо превышающим указанное число.
Рассмотрим командный файл, который копирует файл my.txt на диск C: без вывода на экран сообщений о копировании, а в случае возникновения какой-либо ошибки выдает предупреждение:
@ECHO OFFXCOPY my.txt C:\ > NUL:: Проверка кода завершения копированияIF ERRORLEVEL 1 GOTO ErrOccurredECHO Копирование выполнено без ошибок.GOTO:EOF:ErrOccurredECHO При выполнении команды XCOPY возникла ошибка!В операторе IF ERRORLEVEL … можно также применять операторы сравнения чисел, приведенные в табл. 2. Например:
IF ERRORLEVEL LEQ 1 GOTO Case1Замечание. Иногда более удобным для работы с кодами завершения программ может оказаться использование переменной %ERRORLEVEL%. (строковое представление текущего значения кода ошибки ERRORLEVEL).