Last active
March 10, 2019 12:24
-
-
Save ezhov-da/c3ba0bddb109dc4ff36c603360dec89c to your computer and use it in GitHub Desktop.
bat if
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Оператор условного выполнения команд в пакетном файле. | |
IF [NOT] ERRORLEVEL число команда | |
IF [NOT] строка1==строка2 команда | |
IF [NOT] EXIST имя_файла команда | |
NOT Обращает истинность условия: истинное условие | |
становится ложным, а ложное - истинным. | |
ERRORLEVEL число Условие является истинным, если код возврата последней | |
выполненной программы не меньше указанного числа. | |
строка1==строка2 Это условие является истинным, если указанные строки | |
совпадают. | |
EXIST имя_файла Это условие является истинным, если файл с указанным | |
именем существует. | |
команда Задает команду, выполняемую при истинности условия. | |
За этой командой может следовать ключевое слово 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 применяется подобно условию EXISTS, но принимает в качестве | |
аргумента имя переменной среды и возвращает истинное значение, если эта | |
переменная определена. | |
Строка %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; в подобном случае подставляется | |
значение этой переменной. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment