IF

IF

Обработка условий в пакетных программах

Синтаксис

if [noterrorlevel число команда [ else выражение]

if [notстрока1==строка2 команда [ else выражение]

if [notexist имя_файла команда [ else выражение]

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

if [/iстрока1 оп_сравнения строка2  команда [else выражение]

if cmdextversion число команда [else  выражение]

if defined переменная команда [else  выражение]

Параметры

not
Задает выполнение команды только в случае невыполнения условия.
errorlevelчисло
Условие выполняется, если предыдущая команда, обработанная интерпретатором команд Cmd.exe, завершилась с кодом, равным или большим числа.
команда
Команда, которая должна быть обработана в случае выполнения условия.
строка1==строка2
Условие выполняется, если строки строка1 и строка2 совпадают. Строки могут быть заданы явно или могут быть пакетными переменными (например, %1). Явно заданные строки нет необходимости заключать в кавычки.
existимя_файла
Условие выполняется, если существует файл с именем имя_файла.
оп_сравнения
Трехзначный оператор сравнения. В следующей таблице перечислены допустимые значения оп_сравнения.

ОператорОписание
EQU равно
NEQ не равно
LSS меньше
LEQ меньше или равно
GTR больше
GEQ больше или равно


/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




Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).






  TopList Rambler Top100 own counter Valid XHTML 1.0 Strict Valid CSS Rambler Top100

Фитотерапия Молитвы Водолечение Юмор Форум Кладовка link О авторе

Фитотерапия Молитвы Водолечение Юмор Форум Кладовка Ссылки О авторе Отправить сообщение Карта сайта Поиск по сайту Главная страница

Copyright © 1999 - 2017  Бронислав Краснер