Cmd if: Условный оператор IF — как грамотно оформить код | SafeZone

if | Microsoft Learn

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 3 мин

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

Синтаксис

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, вернула код выхода, который больше или равен
Number
.
<command>Указывает команду, которая должна быть выполнена при выполнении предыдущего условия.
<string1>==<string2>Задает истинное условие, только если строка1 и строка2 совпадают. Эти значения могут быть строками литерала или пакетными переменными (например, %1 ). Литеральные строки не нужно заключать в кавычки.
существующие <filename>Указывает истинное условие, если указанное имя файла существует.
<compareop>Задает оператор сравнения из трех букв, включая:
  • Равно — равно
  • Нек — не равно
  • ЛСС — меньше
  • LEQ -меньше или равно
  • ГТР — больше
  • Жек — больше или равно
/iПринудительное сравнение строк не учитывает регистр. Параметр /i можно использовать в формате If. Эти сравнения являются универсальными, в том случае, если и строка1 , и строка2 состоят из цифр, строки преобразуются в числа и выполняется числовое сравнение.
кмдекстверсион <number>Задает истинное условие, только если внутренний номер версии, связанный с компонентом расширения команд Cmd.exe, равен или больше указанного числа. Первая версия — 1. Он увеличивается на единицу при добавлении значительных улучшений в расширения команд.
Кмдекстверсион
Conditional не имеет значения true, если расширения команд отключены (по умолчанию расширения команд включены).
defined <variable>Указывает истинное условие, если переменная определена.
<expression>Задает команду командной строки и все параметры, которые будут переданы команде в предложении else .
/?Отображение справки в командной строке.
  • Если условие, указанное в предложении If , имеет значение true, выполняется команда, следующая за условием. Если условие имеет значение false, команда в предложении If игнорируется и команда выполняет любую команду, указанную в предложении else .

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

    ERRORLEVEL .

  • При использовании определенногозначения в среду добавляются следующие три переменные: % ERRORLEVEL%, % кмдкмдлине%и % кмдекстверсион%.

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

    • % кмдкмдлине%: разворачивается в исходную командную строку, которая была передана Cmd.exe до любой обработки Cmd. exe. Предполагается, что отсутствует существующая переменная среды с именем КМДКМДЛИНЕ. Если это так, вы получите вместо этого значение КМДКМДЛИНЕ.

    • % кмдекстверсион%: разворачивается в строковое представление текущего значения кмдекстверсион. Предполагается, что отсутствует существующая переменная среды с именем КМДЕКСТВЕРСИОН. Если это так, вы получите вместо этого значение КМДЕКСТВЕРСИОН.

  • Предложение else необходимо использовать в той же строке, что и команда после оператора If.

Примеры

Чтобы отобразить сообщение не удается найти файл данных если не удается найти файл Product. dat, введите:

if not exist product.dat echo Cannot find data file

Чтобы отформатировать диск в диске а и вывести сообщение об ошибке при возникновении ошибки в процессе форматирования, введите в пакетный файл следующие строки:

: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

Дополнительные ссылки

  • Условные обозначения синтаксиса команд командной строки

  • GOTO, команда

Условный оператор IF — как грамотно оформить код | SafeZone

Кирилл