Поделиться через


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> Указывает трехбуквенный оператор сравнения, в том числе:
  • EQU — равно
  • NEQ — не равно
  • LSS — меньше
  • LEQ — меньше или равно
  • GTR — больше
  • GEQ — больше или равно
/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