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


if

Выполняет условную обработку в пакетных программах.

Syntax

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>]

Parameters

Parameter Description
not Указывает, что команда должна выполняться только в том случае, если условие равно false.
ошибка <number> Задает истинное условие только в том случае, если предыдущая программа, запущенная Cmd.exe, вернула код выхода, равный или превышающий число.
<command> Указывает команду, которая должна выполняться, если предыдущее условие выполнено.
<string1>==<string2> Задает истинное условие только в том случае, если строки string1 и string2 совпадают. Эти значения могут быть литеральными строками или пакетными переменными (например, %1). Не нужно заключать литеральные строки в кавычки.
существует <filename> Указывает истинное условие, если указанное имя файла существует.
<compareop> Указывает трехбуквенный оператор сравнения, в том числе:
  • EQU - Равно
  • NEQ - Не равно
  • LSS - Меньше чем
  • LEQ — меньше или равно
  • GTR - Больше чем
  • GEQ — больше или равно
/i Принудительное сравнение строк пропускает регистр. Вы можете использовать /i в string1==string2 форме if. Эти сравнения являются общими в том смысле, что если строки string1 и string2 состоят только из числовых цифр, строки преобразуются в числа и выполняется численное сравнение.
cmdextversion <number> Указывает истинное условие, только если внутренний номер версии, связанный с функцией расширений команд Cmd.exe, равен или больше указанного числа. Первая версия — 1. Он увеличивается на увеличение одного при добавлении значительных улучшений в расширения команд. Условное условие cmdextversion никогда не истинно, когда расширения команд отключены (по умолчанию расширения команд включены).
определенный <variable> Задает истинное условие, если определена переменная .
<expression> Указывает команду командной строки и любые параметры, которые должны быть переданы команде в предложении else .
/? Отображает справку в командной строке.

Remarks

  • Если условие, указанное в предложении if , истинно, выполняется команда, следующая за условием. Если условие ложно, команда в предложении if игнорируется, и команда выполняет любую команду, указанную в предложении else .

  • Когда программа останавливается, она возвращает код выхода. Чтобы использовать коды выхода в качестве условий, используйте параметр errorlevel .

  • Если используется defined, в среду добавляются следующие три переменные: %errorlevel%, %cmdcmdline%и %cmdextversion%.

    • %errorlevel%: Разворачивается в строковое представление текущего значения переменной среды ERRORLEVEL. Эта переменная предполагает, что уже нет существующей переменной среды с именем ERRORLEVEL. Если есть, вместо этого вы получите это значение ERRORLEVEL.

    • %cmdcmdline%: Разворачивается в исходную командную строку, которая была передана Cmd.exe до любой обработки Cmd.exe. Предполагается, что уже нет существующей переменной среды с именем CMDCMDLINE. Если есть, вместо этого вы получите это значение CMDCMDLINE.

    • %cmdextversion%: Разворачивает в строковое представление текущего значения cmdextversion. Предполагается, что уже нет существующей переменной среды с именем CMDEXTVERSION. Если есть, вместо этого вы получите это значение CMDEXTVERSION.

  • Вы должны использовать предложение else в той же строке, что и команда после if.

Examples

Чтобы отобразить сообщение не удается найти файл данных, если файл 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.
)

Note

Эти строки можно объединить в одну строку следующим образом:

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