IF – оператор условного выполнения команд в пакетном файле Windows
Формат командной строки:IF [NOT] ERRORLEVEL число команда
IF [NOT] строка1==строка2 команда
IF [NOT] EXIST имя_файла команда
Параметры:
NOT — Указывает, что Windows должна выполнить эту команду, только если условие является ложным.
ERRORLEVEL число — Условие является истинным, если код возврата последней выполненной программы не меньше указанного числа.
строка1==строка2 — Условие является истинным, если указанные строки совпадают.
EXIST имя_файла — Условие является истинным, если файл с указанным именем существует.
команда — Задает команду, выполняемую при истинности условия. За этой командой может следовать ключевое слово ELSE. В случае, если указанное условие ложно, будет выполнена команда, находящаяся после слова ELSE.
Предложение ELSE должно располагаться в той же строке, что и команда, следующая за ключевым словом IF. Например:
IF EXIST имя_файла. (
del имя_файла.
) ELSE (
echo имя_файла. missing.
)
Следующий пример содержит ОШИБКУ, поскольку команда del должна заканчиваться переходом на новую строку:
IF EXIST имя_файла. del имя_файла. ELSE echo имя_файла. Missing
Следующий пример также содержит ОШИБКУ, поскольку команда ELSE должна располагаться в той же строке, что и команда, следующая за IF:
IF EXIST имя_файла. del имя_файла.
ELSE echo имя_файла. missing
Вот правильный пример, где все команды расположены в одной строке:
IF EXIST имя_файла. (del имя_файла.) ELSE echo имя_файла. Missing
Изменение команды IF при включении расширенной обработки команд:
IF [/I] строка1 оператор_сравнения строка2 команда
IF CMDEXTVERSION число команда
IF DEFINED переменная команда
где оператор_сравнения принимает следующие значения:
EQU — равно
NEQ — не равно
LSS — меньше
LEQ — меньше или равно
GTR — больше
GEQ — больше или равно,
а ключ /I, если он указан, задает сравнение текстовых строк без учета регистра. Ключ /I можно также использовать и в форме строка1==строка2 команды IF. Сравнения проводятся по общему типу данных, так что если строки 1 и 2 содержат только цифры, то обе строки преобразуются в числа, после чего выполняется сравнение чисел.
Условие CMDEXTVERSION применяется подобно условию ERRORLEVEL, но значение сравнивается с внутренним номером версии текущей реализации расширенной обработки команд. Первая версия имеет номер 1. Номер версии будет увеличиваться на единицу при каждом добавлении существенных возможностей расширенной обработки команд. Если расширенная обработка команд отключена, условие CMDEXTVERSION никогда не бывает истинно.
Условие DEFINED применяется подобно условию EXIST, но принимает в качестве аргумента имя переменной среды и возвращает истинное значение, если эта переменная определена.
Строка %ERRORLEVEL% будет развернута в строковое представление текущего значения кода ошибки ERRORLEVEL, за исключением ситуации, когда уже имеется переменная среды с именем ERRORLEVEL; в подобном случае подставляется значение этой переменной. Например, с помощью данной строки можно выполнить следующее:
goto answer%ERRORLEVEL%
:answer0
echo Получен код возврата 0
:answer1
echo Получен код возврата 1
Допускается и применение описанных выше операторов числового сравнения:
IF %ERRORLEVEL% LEQ 1 goto okay
Строка %CMDCMDLINE% будет развернута в исходную командную строку, переданную CMD.EXE до любой обработки, за исключением ситуации, когда уже определена переменная среды с именем CMDCMDLINE; в подобном случае подставляется значение этой переменной.
Строка %CMDEXTVERSION% будет развернута в строку, представляющую собой текущее значение CMDEXTVERSION, за исключением ситуации, когда уже имеется переменная среды с именем CMDEXTVERSION; в подобном случае подставляется значение этой переменной.
Примеры использования:
Если параметр командной строки не задан, то пользователю выдается сообщение об ошибке.
@echo off
REM Проверить наличие имени файла, задаваемого в качестве параметра %1
REM Если параметр %1 пустой – переход на метку error
if «%1» EQU «» goto error
REM Если параметр задан, создаем пустой файл, копированием из устройства nul
copy nul «%1»
:error
ECHO File name required ! Must be — %~n0 filename.ext
:exit
Примеры вывода для отвечающего и не отвечающего узлов:
Ответ от 192.168.1.1: число байт=32 время=1мс TTL=64 — если устройство с данным IP-адресом доступно;
Превышен интервал ожидания для запроса. — если устройство не отвечает;
Команда find /I «TTL» возвращает код ERRORLEVEL равный 0, если строка
«TTL» присутствует в результате выполнения ping. Ключ /I имеет смысл использовать,
чтобы результат не зависил от того, строчные или заглавные символы составляют строку «ttl».
Результат работы командного файла записывается в текстовый файл iplist.txt
@ECHO OFF
REM Постоянная часть IP-адреса
set IPTMP=192.168.1.
REM Количество пингуемых узлов
set N=254
rem С какого адреса начать — начальное значение » хвоста » IP- адреса X.X.X.IPMIN
set /A IPMIN=1
ECHO %DATE% Опрос пингом %N% адресов начиная с %IPTMP%%IPMIN% >> iplist.txt
:M0
rem Переменная IPFULL — полное значение текущего IP-адреса
set IPFULL=%IPTMP%%IPMIN%
rem Если » хвост «больше N – перейти к завершению работы
IF %IPMIN% GTR %N% GOTO ENDJOB
ping -n 1 %IPFULL% | find /I «TTL»
if %ERRORLEVEL%==0 Echo %IPFULL% >> iplist.txt
rem Сформируем следующий IP-адрес
set /A IPMIN=%IPMIN% + 1
rem Перейдем на выполнение следующего шага
GOTO M0
rem Завершение работы
:endjob
exit
Существуют некоторые особенности реализации командного интерпретатора CMD.EXE, которые необходимо учитывать при обработке значений переменных внутри циклов IF и FOR. Использование значений переменных внутри скобок, требует изменения стандартного режима интерпретации командного процессора. Разработчиками предусмотрена возможность запуска CMD.EXE с параметром /V:ON
, что включает разрешение отложенного расширения переменных среды с применением символа восклицательного знака (!) в качестве разделителя. То есть, параметр /V:ON разрешает использовать !var! в качестве значения переменной var во время выполнения внутри циклов команд FOR и IF. Но на практике чаще используется возможность локального включения данного режима внутри командного файла специальной директивой:Setlocal EnableDelayedExpansion
После чего, можно обрабатывать принимаемые переменными значения внутри цикла, используя вместо знаков процента восклицательные знаки:
FOR … (
IF !ERRORLEVEL!==0 вместо %ERRORLEVEL%==0
…
)
    В русскоязычной справке команды IF имеется ошибка, которая много лет переходит из версии в версию — вместо оператора EQU — равно, указано EQL — равно
ab57.ru
Урок 5 по CMD — условный оператор if
В этой статье мы рассмотрим условный оператор if командной строки (CMD). Как и в любом другом языке программирования, условные оператор служит для проверки заданного условия и в зависимости от результат, выполнять то, или иное действие.
Условный оператор cmd if содержит практически тот же синтаксис, что и аналогичные конструкции языков VBScript (смотри статью “Урок 5 по VBScript: Условный оператор if…else и select…case”) и Jscript (статья “Урок 8 по JScript: Описание условного оператора if…else, арифметических и логических операторов”) сервера сценариев Windows Script Host.
Оператор if командная строка
if условие (оператор1) [else (оператор2)]
Вначале идет проверка условия, если оно выполняется, идет переход к выполнению оператора1, если нет – к оператору2. Если после ключевого слова if прописать not (if not), то: произойдет проверка условия, если оно не выполниться – переход к оператору1, если условие выполняется – переход к оператору2. Использование круглых скобок не является обязательным, но если вам нужно после проверки условия выполнить сразу несколько операторов cmd if, то круглые скобки необходимы.
Давайте откроем редактор notepad++ и пропишем в нем такой код:
@echo off if "%1"=="1" (echo odin) else (echo dva) |
Как я уже сказал, мы можем использовать не один оператор (командной строки) cmd if, а несколько, посмотрите на данный пример:
@echo off if "%1"=="1" (hostname & ver & ipconfig /all) else (netstat -a) |
Тут, как и прежде идет проверка передаваемого сценарию параметра, если значение равно 1, то произойдет последовательное выполнение трех команд:
- hostname – выводит имя компьютера
- ver – выводит версию ОС
- ipconfig /all – выводит настройки сети
Для последовательного выполнения команд мы использовали знак конкатенации (объединения) “&”. При невыполнении условия произойдет вызов утилиты netstat.
Что бы проверить существование переменной, используются операторы if defined (если переменная существует) и if not defined (если переменная не существует):
@echo off set Var1=100 if defined Var1 (echo %Var1%) set Var1= if not defined Var1 (echo NOT EXIST!!! Var1) |
Если вы запустите на выполнение данный код, то в окне командной строки будут выведены две строки:
100
NOT EXIST!!! Var1
Вначале, в сценарии происходит создание переменной Var1 и присвоение ей значения 100, далее идет проверка: если переменная Var1 существует, вывести ее значение. Потом мы удаляем переменную и снова запускаем проверку: если переменная Var1 не существует, вывести строку NOT EXIST!!! Var1.
Мы вправе использовать условный оператор if как вложенный:
@echo off if "%1"=="1" (@if "%2"=="2" (hostname & ver) else (ver)) else (hostname & ver & netstat -a) |
В данном примере, первый оператор командной строки if проверяет, равен ли первый аргумент 1, если да, то идет выполнение второго условно оператора и проверка на значение другого аргумента.
Обратите внимание!!! Все переменные определяются как строки. При проверке условия я заключал имена переменных и значений в двойные кавычки, это позволяет избежать ошибок, так как параметры или аргументы могут содержать пробелы, или же у переменной может и вовсе отсутствовать значение.
Давайте теперь посмотрим на такой пример:
@echo off if "%1"=="slovo" (echo slovo) else (@if "%1"=="SLOVO" (echo SLOVO) else (echo NOT DATA!!!)) |
Тут идет проверка первого аргумента, и регистр строки учитывается, что бы отключить учет регистра при проверке строк, после оператора if нужно прописать ключ /I:
@echo off if /I "%1"=="slovo" (echo slovo) else (if /I "%1"=="SLOVO" (echo SLOVO) else (echo NOT DATA!!!)) |
В данном случае, передадим мы строку SLOVO, slovo, SloVo и так далее, все ровно на экран консоли выведется строка “slovo”, так как учет регистра знаков будет отключен.
Оператор if командная строка, операторы сравнения
Кроме оператора сравнения “==” можно использовать и другие операторы для проверки условия:
- equ «Равно». Дает True, если значения равны
- neq «Не равно». Дает True, если значения не равны
- lss «Меньше». Дает True, если зпачение1 меньше, чем значение2
- lcq «Меньше или равно». Дает True, если значепие1 равно или меньше, чемзначение2
- gtr «Больше». Дает True, если значение1 больше, чем значение2
- geq «Больше или равно». Дает True, если значепие1 равно или больше, чем значение2
В этой статье мы рассмотрели условный оператор командной строки if.
scriptcoding.ru
Условный оператор IF — как грамотно оформить код
Koza Nozdri, видел твои коды.Очень красивы, но Имхо, бессмысленны с точки зрения отладки ошибок и понимания логики переходов по условиям.
Очень рекомендую множество вложенных условий формировать по уровням,
как это делается на ЯВУ (языках высокого уровня).
Иначе, большая вероятность, потерять скобку.
if "%test%"=="result" (
тут блок команд
if "%A%"=="%B%" (
тут скрипт vbs
) else (
echo error...
)
) else (
echo test не равнялся result
)
Т.е. простейший IF для строк (с игнорированием регистра букв — ключ /i ) будет:if /i "%A%"=="%B%" (
echo Удача
) else (
echo Неудача
)
Для оператора возврата кода ошибки::: генерируем произвольный код ошибки
cmd /c Exit /B 1
if errorlevel 1 (
echo Была ошибка
) else
echo Не было ошибок
)
Оператор errorlevel 1 — означает что мы сравниваем %errorlevel% с 1. Если код ошибки >= 1, то условие выполняется (true).Для логического сравнения чисел кавычки убираем:
@echo off
set X=1
set Y=2
if %Y% GTR %X% (
echo Y больше X
) else (
echo Y меньше, либо равен X
)
Справка if /?EQL — равно (или просто знак == )
NEQ — не равно
LSS — меньше
LEQ — меньше или равно
GTR — больше
GEQ — больше или равно,Не забывай, что:
= это знак присвоения. Работает только с Set.
== это знак сравнения. Работает в операторе IF.Посмотри в коде Рекурсивный Dir /X (под спойлером) на сколько хорошо прослеживается логика вложенных условий.
safezone.cc
Примеры команды if в командной строке. Справка по командам и параметрам BAT-файла. if. Проверка значения переменной
Обработка условий в пакетных программах.
Синтаксис
if [not ] errorlevel число команда [ else выражение ]
if [not ] строка1 == строка2 команда [ else выражение ]
if [not ] exist имя_файла команда [ else выражение ]
Если расширения командного процессора разрешены, следует использовать следующий синтаксис:
if [/i ] строка1 оп_сравнения строка2 команда [else выражение ]
if cmdextversion число команда [else выражение ]
if defined переменная команда [else выражение ]
Параметры
not Задает выполнение команды только в случае невыполнения условия. errorlevel число Условие выполняется, если предыдущая команда, обработанная интерпретатором команд Cmd.exe, завершилась с кодом, равным или большим числа . команда Команда, которая должна быть обработана в случае выполнения условия. строка1 == строка2 Условие выполняется, если строки строка1 и строка2 совпадают. Строки могут быть заданы явно или могут быть пакетными переменными (например, %1 ). Явно заданные строки нет необходимости заключать в кавычки. exist имя_файла Условие выполняется, если существует файл с именем имя_файла . оп_сравнения Трехзначный оператор сравнения. В следующей таблице перечислены допустимые значения оп_сравнения . /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
Из одного командного файла можно вызвать другой, просто указав его имя. Например:
@ECHO OFF CLS REM Вывод списка log-файлов DIR C:\*.log REM Передача выполнения файлу f.bat f.bat COPY A:\*.* C:\ PAUSE
Однако в этом случае после выполнения вызванного файла управление в вызывающий файл не передается, то есть в приведенном примере команда
(и все следующие за ней команды) никогда не будет выполнена.
Для того, чтобы вызвать внешний командный файл с последующим возвратом в первоначальный файл, нужно использовать специальную команду CALL файл
Например:
@ECHO OFF CLS REM Вывод списка log-файлов DIR C:\*.log REM Передача выполнения файлу f.bat CALL f.bat COPY A:\*.* C:\ PAUSE
В этом случае после завершения работы файла f.bat управление вернется в первоначальный файл на строку, следующую за командой CALL (в нашем примере это команда COPY A:\*.* C:\ ).
Операторы перехода
Командный файл может содержать метки и команды GOTO перехода к этим меткам. Любая строка, начинающаяся с двоеточия:, воспринимается при обработке командного файла как метка. Имя метки задается набором символов, следующих за двоеточием до первого пробела или конца строки. Приведем пример.
Пусть имеется командный файл следующего содержания:
@ECHO OFF COPY %1 %2 GOTO Label1 ECHO Эта строка никогда не выполнится:Label1 REM Продолжение выполнения DIR %2
После того, как в этом файле мы доходим до команды
его выполнение
erfa.ru
Bat условие if. Использование нескольких операторов IF в пакетном файле. Оператор if командная строка
Обработка условий в пакетных программах.
Синтаксис
if [not ] errorlevel число команда [ else выражение ]
if [not ] строка1 == строка2 команда [ else выражение ]
if [not ] exist имя_файла команда [ else выражение ]
Если расширения командного процессора разрешены, следует использовать следующий синтаксис:
if [/i ] строка1 оп_сравнения строка2 команда [else выражение ]
if cmdextversion число команда [else выражение ]
if defined переменная команда [else выражение ]
Параметры
not Задает выполнение команды только в случае невыполнения условия. errorlevel число Условие выполняется, если предыдущая команда, обработанная интерпретатором команд Cmd.exe, завершилась с кодом, равным или большим числа . команда Команда, которая должна быть обработана в случае выполнения условия. строка1 == строка2 Условие выполняется, если строки строка1 и строка2 совпадают. Строки могут быть заданы явно или могут быть пакетными переменными (например, %1 ). Явно заданные строки нет необходимости заключать в кавычки. exist имя_файла Условие выполняется, если существует файл с именем имя_файла . оп_сравнения Трехзначный оператор сравнения. В следующей таблице перечислены допустимые значения оп_сравнения . /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 имя_
innovakon.ru
if | Microsoft Docs
- Время чтения: 3 мин
В этой статье
Выполняет условную обработку в пакетных программах.Performs conditional processing in batch programs.
В разделе Примеры показан принцип использования этой команды.For examples of how to use this command, see Examples.
СинтаксисSyntax
if [not] ERRORLEVEL <Number> <Command> [else <Expression>]
if [not] <String1>==<String2> <Command> [else <Expression>]
if [not] exist <FileName> <Command> [else <Expression>]
Если расширения команд включены, используйте следующий синтаксис:If command extensions are enabled, use the following syntax:
if [/i] <String1> <CompareOp> <String2> <Command> [else <Expression>]
if cmdextversion <Number> <Command> [else <Expression>]
if defined <Variable> <Command> [else <Expression>]
ПараметрыParameters
ПараметрParameter | ОписаниеDescription |
---|---|
notnot | Указывает, что команда должна выполняться, только если условие имеет значение false.Specifies that the command should be carried out only if the condition is false. |
Число <ERRORLEVEL >errorlevel <Number> | Задает истинное условие, только если предыдущая программа, запущенная программой cmd. exe, вернула код выхода, который равен или больше этого числа.Specifies a true condition only if the previous program run by Cmd.exe returned an exit code equal to or greater than Number. |
Команда <><Command> | Указывает команду, которая должна быть выполнена при выполнении предыдущего условия.Specifies the command that should be carried out if the preceding condition is met. |
<строка1 > = =<String1>== | Задает истинное условие, только если строка1 и строка2 совпадают.Specifies a true condition only if String1 and String2 are the same. Эти значения могут быть строками литерала или пакетными переменными (например, %1).These values can be literal strings or batch variables (for example, %1). Литеральные строки не нужно заключать в кавычки.You do not need to enclose literal strings in quotation marks. |
Существует <имя файла >exist <FileName> | Указывает истинное условие, если указанное имя файла существует.Specifies a true condition if the specified file name exists. |
<Компареоп ><CompareOp> | Задает оператор сравнения с тремя буквами.Specifies a three-letter comparison operator. В следующем списке представлены допустимые значения для компареоп:The following list represents valid values for CompareOp: Равно РавноEQU Equal toНек Не равноNEQ Not equal to ЛСС МеньшеLSS Less thanLEQ Меньше или равноLEQ Less than or equal to ГТР БольшеGTR Greater thanЖек Больше или равноGEQ Greater than or equal to |
/i/i | Принудительное сравнение строк не учитывает регистр.Forces string comparisons to ignore case. Параметр /i можно использовать в формате строка1 == строка_замены в параметре If.You can use /i on the String1==String2 form of if. Эти сравнения являются универсальными, в том случае, если и строка1 , и строка2 состоят из цифр, строки преобразуются в числа и выполняется числовое сравнение.These comparisons are generic, in that if both String1 and String2 are comprised of numeric digits only, the strings are converted to numbers and a numeric comparison is performed. |
Номер <кмдекстверсион >cmdextversion <Number> | Задает истинное условие, только если внутренний номер версии, связанный с компонентом расширения команд Cmd. exe, больше или равен указанному значению.Specifies a true condition only if the internal version number associated with the command extensions feature of Cmd.exe is equal to or greater than the number specified. Первая версия — 1.The first version is 1. Он увеличивается на единицу при добавлении значительных улучшений в расширения команд.It increases by increments of one when significant enhancements are added to the command extensions. Кмдекстверсион Conditional не имеет значения true, если расширения команд отключены (по умолчанию расширения команд включены).The cmdextversion conditional is never true when command extensions are disabled (by default, command extensions are enabled). |
определенная переменная <>defined <Variable> | Указывает истинное условие, если переменная определена.Specifies a true condition if Variable is defined. |
> <выражение<Expression> | Задает команду командной строки и все параметры, которые будут переданы команде в предложении else .Specifies a command-line command and any parameters to be passed to the command in an else clause. |
/?/? | Отображение справки в командной строке.Displays help at the command prompt. |
ЗамечанияRemarks
- Если условие, указанное в предложении If , имеет значение true, выполняется команда, следующая за условием. Если условие имеет значение false, команда в предложении If игнорируется и команда выполняет любую команду, указанную в предложении else .If the condition specified in an if clause is true, the command that follows the condition is carried out. If the condition is false, the command in the if clause is ignored and the command executes any command that is specified in the else clause.
- Когда программа останавливается, она возвращает код выхода.When a program stops, it returns an exit code. Чтобы использовать коды выхода в качестве условий, используйте ERRORLEVEL.To use exit codes as conditions, use errorlevel.
- При использовании определенногозначения в среду добавляются следующие три переменные: % ERRORLEVEL% , % кмдкмдлине% и % кмдекстверсион% .If you use defined, the following three variables are added to the environment: %errorlevel%, %cmdcmdline%, and %cmdextversion%.
- % ERRORLEVEL% разворачивается в строковое представление текущего значения переменной среды ERRORLEVEL.%errorlevel% expands into a string representation of the current value of the ERRORLEVEL environment variable. Предполагается, что отсутствует существующая переменная среды с именем ERRORLEVEL — если это так, то вместо этого будет получено значение ERRORLEVEL.This assumes that there is not an existing environment variable with the name ERRORLEVEL—if there is, you will get that ERRORLEVEL value instead.
- % кмдкмдлине% разворачивается в исходную командную строку, которая была передана в cmd. exe до любой обработки с помощью cmd. exe.%cmdcmdline% expands into the original command line that was passed to Cmd.exe prior to any processing by Cmd.exe. Предполагается, что отсутствует существующая переменная среды с именем КМДКМДЛИНЕ — если это так, вместо этого будет получено значение КМДКМДЛИНЕ.This assumes that there is not an existing environment variable with the name CMDCMDLINE—if there is, you will get the CMDCMDLINE value instead.
- % кмдекстверсион% разворачивается в строковое представление текущего значения кмдекстверсион.%cmdextversion% expands into the string representation of the current value of cmdextversion. Предполагается, что отсутствует существующая переменная среды с именем КМДЕКСТВЕРСИОН — если это так, вместо этого будет получено значение КМДЕКСТВЕРСИОН.This assumes that there is not an existing environment variable with the name CMDEXTVERSION—if there is, you will get the CMDEXTVERSION value instead.
- Предложение else необходимо использовать в той же строке, что и команда после оператора If.You must use the else clause on the same line as the command after the if.
ПримеровExamples
Чтобы отобразить сообщение «не удается найти файл данных», если не удается найти файл Product. dat, введите:To display the message «Cannot find data file» if the file Product.dat cannot be found, type:
if not exist product.dat echo Cannot find data file
Чтобы отформатировать диск в диске а и вывести сообщение об ошибке при возникновении ошибки в процессе форматирования, введите в пакетный файл следующие строки:To format a disk in drive A and display an error message if an error occurs during the formatting process, type the following lines in a batch 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 не найден, введите в пакетном файле следующие строки:To delete the file Product.dat from the current directory or display a message if Product.dat is not found, type the following lines in a batch file:
IF EXIST Product.dat (
del Product.dat
) ELSE (
echo The Product.dat file is missing.
)
Примечание
Эти строки можно объединить в одну строку следующим образом:These lines can be combined into a single line as follows:
IF EXIST Product.dat (del Product.dat) ELSE (echo The Product.dat file is missing.)
Чтобы вывести значение переменной среды ERRORLEVEL после выполнения пакетного файла, введите в пакетный файл следующие строки:To echo the value of the ERRORLEVEL environment variable after running a batch file, type the following lines in the batch file:
goto answer%errorlevel%
:answer1
echo Program had return code 1
:answer0
echo Program had return code 0
goto end
:end
echo Done!
Чтобы переходить к метке «хорошо», если значение переменной среды ERRORLEVEL меньше или равно 1, введите:To go to the «okay» label if the value of the ERRORLEVEL environment variable is less than or equal to 1, type:
if %errorlevel% LEQ 1 goto okay
Дополнительная справкаAdditional references
Условные обозначения синтаксиса команд командной строкиCommand-Line Syntax Key
НаличииIf
GotoGoto
docs.microsoft.com
Командная строка — команда If
Выполняется обработка условий для приложений пакетного типа.
Синтаксис
if [not] errorlevel заданное_число команда_для_обработки [else выражение] if [not] строка_№1==строка_№2 команда_для_обработки [else выражение] if [not] exist название_файла команда_для_обработки [else выражение]
В том случае, когда расширения командного процессора являются допустимыми, необходимо применять указанный ниже вариант:
if [/i] строка_№1 оператор_сравнения строка_№2 команда_для_обработки [else выражение] if cmdextversion заданное_число команда_для_обработки [else выражение] if defined заданная_переменная команда_для_обработки [else команда_и_параметры]
Расшифровка значений
not
Предусматривает, что исполнение станет осуществляться только в той ситуации, когда заданные условия не будут реализовываться.
errorlevel заданное_число
Исполнение происходит в той ситуации, когда результатом обработки предыдущей команды стал код, значение которого превышает или равняется заданному числу.
команда_для_обработки
Позволяет задать команду для обработки в том случае, если происходит соблюдение указанных условий.
строка_№1==строка_№2
Данный параметр устанавливает требование – условие станет выполняться только в том случае, когда указанные строки будут совпадать друг с другом. Допускается несколько вариантов задания строк, в зависимости от конкретной ситуации.
exist название_файла
Данное условие будет выполнено в том случае, когда документ с указанным именем существует.
оператор_сравнения
В качестве указанного параметра предусматривается оператор сравнения. Он состоит из трех символов и необходимо сказать о доступных вариантах: EQU (равенство), NEQ (значения не равны между собой), LSS (менее), GTR (более), LEQ (значение является меньшим или равным), GEQ (значение является большим или равным).
/i
Проводится сравнение между строками. Основной особенностью параметра является то, что подобный процесс осуществляется без учета строчных заглавных символов.
cmdextversion заданное_число
Требует выполнять равнение между версиями. Здесь предусматривается, что заданное число будет увеличиваться на единицу каждый раз, когда осуществляется внесение крупных корректировок. Таким образом, условие станет выполняться, только когда номер внутренней версии будет равен или превышать указанное значение.
defined заданная_переменная
Выполнение условия осуществляется в том случае, когда точно определена заданная переменная.
команда_и_параметры
Команда, а также все доступные для неё параметры в ходе обработки в КС, когда работает else.
xn--80aa0aebnilejl.xn--p1ai