Смекни!
smekni.com

Возможности командных файлов (стр. 3 из 3)

Сравнение с пустой строкой. Используя в команде IF символьные имена параметров %0 - %9 следует проявлять осторожность. Например, сравнение второго параметра командного файла со строкой ‘sss’ не следует делать так:

IF %2 == sss …

Дело в том, что если в командный файл передано меньше двух параметров, тогда все символы %2 в нем будут замещены пустой строкой, и при выполнении команды возникнет ошибка из-за того, что аргумент слева от оператора ‘==’ будет отсутствовать. Правильная команда сравнения должна использовать префикс ‘-’ в аргументах:

IF -%2 == -sss ...

Эта команда работает корректно при любом значении параметра %2.

12. Диалог с пользователем в командных файлах. Команда Choice

Иногда в командном файле нужно выполнить различные действия по выбору пользователя. Это можно сделать с помощью программы Choice. Формат команды:

Choice (/C список-символов) (/Т:символ,число-секунд) сообщение

Параметры:

/C список-символов – указывает допустимые символы, которые может ввести пользователь в ответ на сообщение. Если данный параметр не указан, тогда допустимыми символами будут ‘Y’ и ‘N’. Значение переменной ERRORLEVEL, возвращаемое после завершения команды Choice, устанавливается равным порядковому номеру введенного символа в списке.

/Т:символ,число-секунд – когда этот параметр указан, тогда в качестве ответа принимается указанный символ, если пользователь по истечении времени, заданного параметром число-секунд, не нажал ни на одну клавишу.

Пример. Команда организации диалога с пользователем в пакетном файле при помощи программы Choice:

Choice /C:YN “Запустить программу ALFA”

В результате выполнения данной команды при ответе Y значение переменной ERRORLEVEL будет установлено равным 2, при ответе N – равным 1.

Замечания:

1. Если Вы желаете, чтобы при вводе символов различались прописные и строчные буквы, укажите в команде параметр /S.

2. По умолчанию к сообщению добавляется список символов (через запятую в квадратных скобках), допустимых для ответа и знак вопроса. Для того чтобы избежать этого, нужно указать в команде параметр /N.

3. Если в сообщении, которое нужно вывести на экран, имеются символы ‘/’, тогда его следует заключить в кавычки.

Пример. Покажем, как следует обрабатывать значения, возвращаемые программой Choice. В приведенном ниже примере пользователь по своему выбору запускает одну из трех игр:

@Echo off

Echo Выберите игру: D - DIGGER, Т - TETRIS, С - CAT

Choice /C:DTC "Введите символ"

IF errorlevel 3 goto cat

IF errorlevel 2 goto tet

Digger.exe

goto exit

:tet

Tetris.exe

goto exit

:cat

Cat.exe

:exit

Внимание! Проверку переменной ERRORLEVEL командами IF следует производить в порядке убывания ее возможных значений: сначала нужно проверить ее на самое большое значение, затем - на следующее по убыванию и т.д.