В этой статье мы рассмотрим условный оператор 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.
В операторах сравнения ошибка. Правильно не lcq, а leq. Less or EQual
Ошибочка господа! Меньше или равно -LEQ. Поправить нужно…