if
Выполняет условную обработку в пакетных программах.
Синтаксис
if [not] ERRORLEVEL <number> <command> [else <expression>]
if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]
Если расширения команд включены, используйте следующий синтаксис:
if [/i] <string1> <compareop> <string2> <command> [else <expression>]
if cmdextversion <number> <command> [else <expression>]
if defined <variable> <command> [else <expression>]
Параметры
Параметр | Описание |
---|---|
not | Указывает, что команда должна выполняться только в том случае, если условие равно false. |
Errorlevel <number> |
Указывает истинное условие, только если предыдущая программа, запущенная Cmd.exe вернула код выхода, равный или больше числа. |
<command> |
Указывает команду, которая должна выполняться, если предыдущее условие выполнено. |
<string1>==<string2> |
Указывает истинное условие, только если строка1 и строка2 совпадают. Эти значения могут быть литеральными строками или пакетными переменными (например, %1 ). Не нужно заключать литеральные строки в кавычки. |
Существует <filename> |
Указывает истинное условие, если указанное имя файла существует. |
<compareop> |
Указывает трехбуквенный оператор сравнения, в том числе:
|
/i | Принудительное сравнение строк пропускает регистр. Вы можете использовать /i в string1==string2 форме if. Эти сравнения являются универсальными, в том случае, если только строка1 и строка2 состоят только из числовых цифр, строки преобразуются в числа и выполняется числовое сравнение. |
cmdextversion <number> |
Указывает истинное условие, только если внутренний номер версии, связанный с функцией расширений команд Cmd.exe, равен или больше указанного числа. Первая версия — 1. Он увеличивается на увеличение одного при добавлении значительных улучшений в расширения команд. Условный элемент cmdextversion никогда не имеет значения true, если расширения команд отключены (по умолчанию включены расширения команд). |
defined <variable> |
Указывает истинное условие, если определена переменная . |
<expression> |
Указывает команду командной строки и все параметры, передаваемые команде в предложении else . |
/? | Отображение справки в командной строке. |
Замечания
Если условие, указанное в предложении if , имеет значение true, выполняется команда, следующая за условием. Если условие равно false, команда в предложении if игнорируется, а команда выполняет любую команду, указанную в предложении else .
Когда программа останавливается, она возвращает код выхода. Чтобы использовать коды выхода в качестве условий , используйте параметр errorlevel .
При использовании определенных трех переменных добавляются в среду: %errorlevel%, %cmdcmdline%и %cmdextversion%.
%errorlevel%: расширяет строковое представление текущего значения переменной среды ERRORLEVEL. Эта переменная предполагает, что уже нет существующей переменной среды с именем ERRORLEVEL. Если есть, вместо этого вы получите это значение ERRORLEVEL.
%cmdcmdline%: расширяется в исходную командную строку, переданную в Cmd.exe до обработки Cmd.exe. Предполагается, что уже нет существующей переменной среды с именем CMDCMDLINE. Если есть, вместо этого вы получите это значение CMDCMDLINE.
%cmdextversion%: расширяет строковое представление текущего значения cmdextversion. Предполагается, что уже нет существующей переменной среды с именем CMDEXTVERSION. Если есть, вместо этого вы получите это значение CMDEXTVERSION.
Необходимо использовать предложение else в той же строке, что и команда после этого.
Примеры
Чтобы отобразить сообщение не удается найти файл данных, если не удается найти файл Product.dat, введите:
if not exist product.dat echo Cannot find data file
Чтобы отформатировать диск на диске A и отобразить сообщение об ошибке, если ошибка возникает во время процесса форматирования, введите следующие строки в пакетном файле:
:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo An error occurred during formatting.
:end
echo End of batch program.
Чтобы удалить файл Product.dat из текущего каталога или отобразить сообщение, если Product.dat не найдено, введите следующие строки в пакетном файле:
IF EXIST Product.dat (
del Product.dat
) ELSE (
echo The Product.dat file is missing.
)
Примечание.
Эти строки можно объединить в одну строку следующим образом:
IF EXIST Product.dat (del Product.dat) ELSE (echo The Product.dat file is missing.)
Чтобы повторить значение переменной среды ERRORLEVEL после запуска пакетного файла, введите следующие строки в пакетном файле:
goto answer%errorlevel%
:answer1
echo The program returned error level 1
goto end
:answer0
echo The program returned error level 0
goto end
:end
echo Done!
Чтобы перейти к правильной метки, если значение переменной среды ERRORLEVEL меньше или равно 1, введите:
if %errorlevel% LEQ 1 goto okay