Второй способ использования команды IF — это проверка существования заданного файла. Синтаксис для этого случая имеет вид:
IF [NOT] EXIST файл команда1 [ELSE команда2]
Условие считается истинным, если указанный файл существует. Кавычки для имени файла не требуются. Приведем пример командного файла, в котором с помощью такого варианта команды IF проверяется наличие файла, указанного в качестве параметра командной строки.
@ECHO OFF
IF -%1==- GOTO NoFileSpecified
IF NOT EXIST %1 GOTO FileNotExist
REM Вывод сообщения о найденном файле
ECHO Файл '%1' успешно найден.
GOTO :EOF
:NoFileSpecified
REM Файл запущен без параметров
ECHO В командной строке не указано имя файла.
GOTO :EOF
:FileNotExist
REM Параметр командной строки задан, но файл не найден
ECHO Файл '%1' не найден.
Проверка наличия переменной среды
Аналогично файлам команда IF позволяет проверить наличие в системе определенной переменной среды:
IF DEFINED переменная команда1 [ELSE команда2]
Здесь условие DEFINED применяется подобно условию EXISTS наличия заданного файла, но принимает в качестве аргумента имя переменной среды и возвращает истинное значение, если эта переменная определена. Например:
@ECHO OFF
CLS
IF DEFINED MyVar GOTO :VarExists
ECHO Переменная MyVar не определена
GOTO :EOF
:VarExists
ECHO Переменная MyVar определена,
ECHO ее значение равно %MyVar%
Проверка кода завершения предыдущей команды
Еще один способ использования команды IF — это проверка кода завершения (кода выхода) предыдущей команды. Синтаксис для IF в этом случае имеет следующий вид:
IF [NOT] ERRORLEVEL число команда1 [ELSE команда2]
Здесь условие считается истинным, если последняя запущенная команда или программа завершилась с кодом возврата, равным либо превышающим указанное число.
Составим, например, командный файл, который бы копировал файл my.txt на диск C: без вывода на экран сообщений о копировании, а в случае возникновения какой-либо ошибки выдавал предупреждение:
@ECHO OFF
XCOPY my.txt C:\ > NUL
REM Проверка кода завершения копирования
IF ERRORLEVEL 1 GOTO ErrOccurred
ECHO Копирование выполнено без ошибок.
GOTO :EOF
:ErrOccurred
ECHO При выполнении команды XCOPY возникла ошибка!
В операторе IF ERRORLEVEL можно также применять операторы сравнения чисел, приведенные в таблице. Например:
IF ERRORLEVEL EQU 1 GOTO Case1
Замечание:
Иногда более удобным для работы с кодами завершения программ может оказаться использование переменной %ERRORLEVEL%. (строковое представление текущего значения кода ошибки ERRORLEVEL).
Проверка версии реализации расширенной обработки команд
Для определения внутреннего номера версии текущей реализации расширенной обработки команд применяется оператор IF в следующем виде:
IF CMDEXTVERSION число команда1 [ELSE команда2]
Здесь условие CMDEXTVERSION применяется подобно условию ERRORLEVEL, но число сравнивается с вышеупомянутым внутренним номером версии. Первая версия имеет номер 1. Номер версии будет увеличиваться на единицу при каждом добавлении существенных возможностей расширенной обработки команд. Если расширенная обработка команд отключена, условие CMDEXTVERSION никогда не бывает истинно.
Задание 1 на использование безусловного перехода
1) Создать командный файл, такой же как file.bat. Выполнить его и сравнить результаты с приведенными выше.
2) Создать другой командный файл, выводящий текущее время и вызывающий file.bat.
Задание 2 на применение команды условного перехода
1) Создать командные файлы, подобные примерам. Выполнить их и сравнить с результатами, приведёнными в описании.
2) Написать командный файл, который запрашивает имя пользователя, сравнивает его с заранее заданным значением и в случае совпадения выводит строку "Access granted" и содержимое текущего каталога. Если имена не совпадают, программа выдает строку "Access denied" и прекращает выполнение.
3) Написать командный файл, который проверяет существование файла, заданного пользователем в качестве параметра и в случае его наличия, печатает содержимое файла на экране. Если файл не найден, пользователю предлагается ввести другое имя файла для просмотра. Если файл снова не найден, выводится строка "Exiting.." и программа завершается. Если файл найден, то программа выводит содержимое постранично на экран, а затем снова запрашивает имя. И так до ввода несуществующего имени файла.
Дата: 2018-12-28, просмотров: 494.