
5. Проверка переданных параметров
При реализации командного файла может возникнуть потребность проверить, передал ли пользователь параметр или нет.
Например, реализуем командный файл, которому в качестве параметра передается имя пользователя, а он выводит приветствие. Если же пользователь не передаст своего имени, необходимо выдать предупреждающее сообщение.
Вот, как может быть реализована данная задача:
@ ECHO OFF
IF NOT "%1"=="" GOTO HELLO
ECHO What is your name?
EXIT /B
:HELLO
ECHO Hello, %1!
С
охраните
данный файл с именем «Hello.cmd» и попробуйте
его запустить без параметров и с
параметром:
Разберем данный командный файл подробнее.
Первая строка «@ ECHO OFF» нужна для того, что бы не дублировались команды в экране консоли (символ «@» в начале строки предотвращает дублирование самой этой строки).
Вторая строка «IF NOT "%1"=="" GOTO HELLO» буквально означает следующее: если первый параметр не пуст, то перейти на метку «HELLO».
Третья строка «ECHO What is your name?» сообщает пользователю, что он забыл ввести имя (т.е. передать параметр в командный файл).
Четвертая строка «EXIT /B» содержит уже известную нам команду «EXIT», однако она содержит параметр «/B». Данный параметр указывает на то, что будет завершен не сам консольный режим работы, а только текущий командный файл.
Пятая строка «:HELLO» содержит в себе метку. Метки должны начинаться с символа «:» и содержать любую последовательность латинских символов, цифр и символа «_». Метки нужны для того, что бы из любой точки командного файла можно было бы передать управление в точку, содержащую данную метку. Для этого служит команда «GOTO», которой, в качестве параметра, передается имя метки для перехода.
Шестая строка «ECHO Hello, %1!» выведет на экран приветствие, подставив вместо «%1» имя пользователя (значение переданного в командный файл параметра).
И так, для проверки переданных параметров можно использовать команду «IF». Ключевое слово «NOT», указанное в этой команде означает отрицание условия. Следом за ним идёт само условие: «"%1"==""», что означает сравнение параметра «%1» с пустой строкой. Таким образом, если параметр «%1» не является пустой строкой (т.е. параметр был передан пользователем), выполнение командного файла переходит в точку, помеченную меткой «HELLO», где и происходит вывод приветствия на экран. Если же параметр не был передан (а, значит, он содержал в себе пустую строку), то управление переходит на следующую команду после «IF», где и выводится сообщение о том, что пользователь забыл ввести имя, а, затем, происходит завершение выполнения командного файла.
Что бы лучше освоить материал, ознакомьтесь со справками по командам «IF» и «GOTO». Для этого наберите в командной строке команды «IF /?» и «GOTO /?».
6. Проверка существования файла
Можно узнать, существует ли тот или иной фай л на диске. Для этого используется команда «IF» с условием «EXIST». В общем случае синтаксис команды выглядит следующим образом:
IF [NOT] EXIST имя_файла команда
NOT – Указывает, что Windows должна выполнить эту команду, только если условие является ложным.
EXIST имя_файла – Условие является истинным, если файл с указанным именем существует.
команда – Задает команду, выполняемую при истинности условия.
В качестве примера создадим командный файл, который будет получать имя файла в качестве параметра, проверять, существует ли указанный файл. Если файл существует, то он будет копироваться в корень диска F:, в противном случае должно выводиться соответствующее сообщение.
@ ECHO OFF
IF NOT EXIST %1 GOTO ERROR
COPY %1 F:\
EXIT /B
:ERROR
ECHO File %1 not found.
Пояснение кода:
1-я строка предотвращает дублирование исполняющихся команд в окне консоли.
2-я строка производит проверку на несуществование файла, имя которого передано в качестве параметра. Если файл не существует, то осуществляется переход на метку ERROR, в противном случае управление передается следующей команде.
3-я строка осуществляет копирование файла, имя которого передано в качестве параметра, в корень диска F:.
4-я строка завершает работу командного файла после копирования.
5-я строка содержит метку с именем «ERROR».
6-я строка выводит сообщение о том, что файл не найден.
Задание: добавьте в этот командный файл проверку на случай, если пользователь не передал параметр.