If
Обработка условий в пакетных программах.
Синтаксис
Если расширения командного процессора разрешены, следует использовать следующий синтаксис:
Параметры
- not
- Задает выполнение команды только в случае невыполнения условия.
- errorlevel число
- Условие выполняется, если предыдущая команда, обработанная интерпретатором команд Cmd.exe, завершилась с кодом, равным или большим числа.
- команда
- Команда, которая должна быть обработана в случае выполнения условия.
- строка1==строка2
- Условие выполняется, если строки строка1 и строка2 совпадают. Строки могут быть заданы явно или могут быть пакетными переменными (например, %1). Явно заданные строки нет необходимости заключать в кавычки.
- exist имя_файла
- Условие выполняется, если существует файл с именем имя_файла.
- оп_сравнения
- Трехзначный оператор сравнения. В следующей таблице перечислены допустимые
значения оп_сравнения.
Оператор Описание EQU равно NEQ не равно LSS меньше LEQ меньше или равно GTR больше GEQ больше или равно - /i
- Сравнение строк без учета регистра знаков. Параметр /i можно использовать в конструкции string1==string2 команды if. Эти сравнения являются общими. Если и строка1, и строка2 состоят из цифр, строки преобразовываются в числа и выполняется сравнение чисел.
- cmdextversion число
- Условие выполняется, только если номер внутренней версии, связанный с расширениями командного процессора Cmd.exe, равен или больше числа. первая версия имела номер 1. Номер версии увеличивается на 1 при внесении в расширения командного процессора значительных изменений. Условие с cmdextversion не выполняется, если расширения командного процессора запрещены (по умолчанию они разрешены).
- defined переменная
- Условие выполняется, если переменная определена.
- выражение
- Команда и все ее параметры для обработке в командной строке при выполнении оператора else.
- /?
- Отображение справки в командной строке.
Заметки
- Если условие, заданное в команде if, выполняется, будет выполнена команда, следующая за условием. Если условие не выполняется, команда, заданная в операторе if, пропускается, а управление переходит к команде оператора else, если она задана.
- Когда программа завершается, она возвращает код завершения. С помощью параметра errorlevel коды завершения можно использовать в качестве условий.
- Использование команды defined переменная
При использовании команды defined переменная добавляются следующие три переменные: %errorlevel%, %cmdcmdline% и %cmdextversion%.
%errorlevel% замещается строковым представлением текущего значения errorlevel, если только уже не существует переменная среды с именем ERRORLEVEL. В этом случае будет использовано ее значение. В следующем примере показано использование значения errorlevel после выполнения пакетной программы:
goto answer%errorlevel%
:answer0
echo Код возврата программы равен 0
:answer1
echo Код возврата программы равен 1
goto end
:end
echo Готово!Операторы сравнения оп_сравнения также можно использовать следующим образом:
if %errorlevel% LEQ 1 goto okay
%cmdcmdline% замещается исходной командной строкой, переданной Cmd.exe, до ее обработки в Cmd.exe, если только уже не существует переменная среды с именем cmdcmdline. В этом случае будет использовано значение cmdcmdline.
%cmdextversion% замещается строковым представлением текущего значения cmdextversion, если только уже не существует переменная среды с именем CMDEXTVERSION. В этом случае будет использовано ее значение.
- Использование оператора else
Оператор else должен размещаться в той же строке, что и команда if. Пример:
IF EXIST имя_файла. ( del имя_файла. ) ELSE ( echo имя_файла. отсутствует. )
Приведенный ниже пример не будет работать, поскольку команда del должна заканчиваться новой строкой:
IF EXIST имя_файла. del имя_файла. ELSE echo имя_файла. отсутствует
Приведенный ниже пример не будет работать, поскольку команда else должна находиться в той же строке, что и команда if:
IF EXIST имя_файла. del имя_файла. ELSE echo имя_файла. отсутствует
Если необходимо разместить всю инструкцию в одной строке, можно использовать следующую правильную форму исходной инструкции:
IF EXIST имя_файла. (del имя_файла.) ELSE echo имя_файла. отсутствует
Примеры
Если файл Product.dat не удается найти, появится следующее сообщение:
if not exist product.dat echo Не найден файл данных
Если в приведенном ниже примере при форматировании диска в дисководе A возникнет ошибка, будет выведено сообщение об ошибке:
:begin
@echo off
format a: /s
if not errorlevel 1 goto
end
echo Ошибка при форматировании.
:end
echo Конец пакетной
программы.
Если ошибка не возникнет, сообщение об ошибке выведено не будет.
Команда if не может быть использована непосредственно для проверки существования каталога, но в каждом каталоге существует устройство (NUL). Следовательно, существование каталога может быть проверено, как показано ниже. В следующем примере проверяется наличие каталога:
if exist c:mydir\nul goto process