При поддержке компании Mobatime Systems: лидера в разработке, производстве и продаже приборов и систем времени. Подробнее...
Сайт · Форум · Инструменты WindowsFAQ.ru - Сайт о Windows, компьютерах, системном администрировании, локальных сетях

Поиск

Друзья

Клуб любителей ASPLinux
Kerio Winroute Firewall инструкции настройки

Шаблоны

New_WindowsFAQ
Главная arrow FAQ arrow Командная строка arrow If
If Версия для печати
Автор SavageNoName   

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

Синтаксис

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 имя_файла Условие выполняется, если существует файл с именем имя_файла. оп_сравнения Трехзначный оператор сравнения. В следующей таблице перечислены допустимые значения оп_сравнения.

Оператор

Описание

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

 
< Hostname   Install >

Сервер NTP

Время, полученное с NTP-сервера. Для просмотра должен быть разрешён Java-script.
Время, полученное с Вашего компьютера. Для просмотра должен быть разрешён Java-script.

Доступ к серверу NTP первого стратума
Подробнее

На форуме

Лента RSS

Mobatime - Автору - Рекламодателю - Веб-мастеру - Контакт - История - Наверх
© Владислав Семёнов aka SavageNoName 2003-2017
При любом использовании материалов ссылка на WindowsFAQ.ru обязательна
Сайту 13 лет, 0 месяцев и 17 дней. Форуму 16 лет, 4 месяца и 30 дней.