Параметры командных файлов
Лабораторная работа №4
Использование параметров командной строки и условного выполнения команд
Цель: Овладеть навыками работы с командными файлами в Windows NT/2000, научиться работать с параметрами командной строки и циклами и условным выполнением команд.
Общие положения
Пакетные (командные) файлы, также называемые программами пакетной обработки или сценариями, позволяют упростить выполнение утомительных и часто используемых операций. Еще в операционной системе MS-DOS появилась возможность записывать нужную для этого последовательность команд операционной системы в специальный файл, называемый командным файлом и имеющий расширение .BAT. Пакетный файл в Windows NT/2000/XP представляет собой неформатированный текстовый файл, содержащий одну или несколько команд и имеющий расширение имени .bat или .cmd. Когда имя такого файла вводится в командной строке (расширение можно не указывать), программа Cmd.exe выполняет по порядку команды, записанные в файле.
В пакетный файл можно включить любую команду. Некоторые команды, такие как for, goto и if, позволяют выполнять обработку условий в пакетных файлах. Например, if позволяет запускать команды в зависимости от выполнения заданного условия. Другие команды позволяют управлять вводом и выводом, а также запускать другие пакетные файлы.
Стандартные коды ошибок, возвращаемые большинством приложений — это 0, если ошибки отсутствуют, и 1 (или более высокое значение), если возникла ошибка. Чтобы определить значения отдельных кодов, см. справочную документацию приложения.
Прервать выполнение командного файла можно с помощью комбинации Ctrl+C илиCtrl+Break. В командном файле можно вызывать другой командный файл, указав его имя и, если надо, параметры. Но после окончания работы вызванного файла выполнение исходного командного файла продолжено не будет. Если нужно продолжить выполнение после выполнения вложенного файла, можно воспользоваться командой CALL.
При описании синтаксиса команд будут использоваться следующие обозначения:
Формат | Значение |
Курсив | Данные, которые должен ввести пользователь |
Полужирный шрифт | Элементы, которые следует вводить точно, как показано |
Пропуск (...) | Параметры могут повторяться несколько раз в командной строке |
В квадратных скобках ([]) | Необязательные элементы |
В фигурных скобках ({}); варианты разделены вертикальной чертой (|). Пример: {четные|нечетные} | Набор значений, из которого можно выбрать только одно значение |
Шрифт Courier | Текст кода или выхода программы |
Команды, используемые в командных файлах
Команда Echo
Вывод на экран сообщения или задание режима вывода на экран сообщений команд. Вызванная без параметров команда echo выводит текущий режим.
Синтаксис
echo [{on|off}] [сообщение]
Параметры
{on|off} - Включение или отключения режима отображения на экране информации о работе команд.
сообщение - текст для вывода на экран.
Примечания
· Команда echo сообщение может оказаться полезной, если отключен режим отображения работы команд. Для вывода сообщений из нескольких строк без вывода дополнительных команд между ними следует использовать несколько последовательных команд echo сообщение после команды echo off в пакетной программе.
· Если используется команда echo off, приглашение командной строки не отображается на экране. Чтобы отобразить приглашение, введите команду echo on.
· Чтобы отключить вывод строк, введите символ «коммерческого эт» (@) перед командой в пакетном файле.
· Чтобы вывести на экране пустую строку, введите следующую команду:
· echo.
· Если требуется отключить режим отображения команд и при этом не выводить на экран строку самой команды echo, введите символ @ перед командой:
@echo off
Команда Goto
В пакетной программе передает управление Windows XP в строку, определенную меткой. Когда метка найдена, выполнение продолжается со следующей за ней строки.
Синтаксис
goto метка
Параметры
метка -Строка в пакетной программе, к которой выполняется переход.
· Работа с расширениями командыgoto
Если расширения команды включены (по умолчанию они включены) и в команде goto используется метка :EOF, управление будет передано в конец файла текущего пакетного сценария для выхода из него без назначения метки. Когда используется команда goto с меткой :EOF, перед меткой должно быть вставлено двоеточие. Например: goto :EOF
· Использование допустимых значений метки
Метка может включать пробелы, но не может включать другие разделители, такие как точка с запятой или знак равенства. В команде goto используются только первые восемь знаков метки.
· Совпадение меток в пакетных программах
Метка, заданная в команде, должна соответствовать метке в тексте пакетной программы. В Windows NT/2000/XP строка пакетной программы, начинающаяся с двоеточия (:), опознается как метка и не обрабатывается как команда. Если в пакетном файле не содержится заданной метки, программа будет остановлена, а на экран будет выведено следующее сообщение:
Метка не найдена.
Команда Pause
Приостанавливает выполнение пакетной программы с выводом сообщения об ожидании нажатия пользователем любой клавиши.
Синтаксис
Pause
Примечания
· При запуске команды prompt выводится следующее сообщение:
Для продолжения нажмите любую клавишу . . .
· Если при работе пакетной программы была нажата комбинация CTRL+C для ее остановки, то на экран будет выведено следующее сообщение:
Завершить выполнение пакетного файла [Y(да)/N(нет)]?
Если была нажата клавиша Y (подтверждение), пакетная программа будет закончена и управление вернется операционной системе. По этой причине команда pause может быть вставлена перед разделом пакетного файла, который потребуется пропустить. Команда pause приостанавливает выполнение пакетной программы, аналогичное действие можно сделать, нажав комбинацию CTRL+C и Y.
Команда Rem
Добавляет комментарии в пакетные файлы или файлы настройки.
Синтаксис
rem[текст]
Параметры
текст - задает строку символов, используемую в качестве комментария.
· Вывод комментариев на экран с помощью команды echo
Команда rem не выводит комментарии на экран. Для вывода комментариев на экран необходимо использовать команду echo on в пакетных файлах или в файле Config.nt.
Параметры командных файлов
Командным файлам из командной строки могут быть переданы аргументы. Аргументы задаются параметрами командной строки после имени файла. Файл Cmd.exe использует переменные с %0 по %9. При использовании пакетных параметров переменная %0 заменяется на имя пакетного файла, а переменные с %1 по %9 — на соответствующие аргументы, напечатанные в командной строке. Для доступа к переменным больше %9 используется команда shift. Параметр %* ссылается на все аргументы, которые передаются пакетному файлу, за исключением параметра %0.
Команда Shift
Изменяет положения пакетных параметров в пакетных файлах.
Синтаксис
Shift
Параметры отсутствуют
· Использование параметра командной строки shift с расширениями командного процессора
Если расширения командного процессора разрешены (используются по умолчанию), команда shift поддерживает ключ /n, который указывает команде начинать сдвиг с n-го аргумента, где n — число от нуля до восьми. Например:
SHIFT /2
сдвинет %3 на %2, %4 на %3 и т. д. %0 и %1 останутся неизменными.
· Работа команды shift
Команда shift изменяет значения замещаемых параметров %0 - %9 путем копирования каждого параметра в предыдущий. Другими словами, значение %1 копируется в %0, значение %2 — в %1 и т. д. Такой прием оказывается полезным при написании пакетных файлов, выполняющих одну и ту же операцию над любым числом параметров.
· Работа более чем с 10 пакетными параметрами
Команда shiftтакже может быть использована для создания пакетных программ, воспринимающих более 10 параметров. В командной строке такой программы можно задать более 10-ти параметров, при этом все параметры, следующие за десятым (то есть за переменной%9) будут последовательно помещены в эту переменную %9.
· Использование %* с командой shift
Команда shift не влияет на пакетный параметр %*.
· Смещение параметров в обратном направлении
Команды, выполняющей обратный сдвигне существует. После сдвига параметров командой shift начальное значение первого параметра (%0) не может быть восстановлено.
Команда Call
Вызов одного пакетного файла из другого без завершения выполнения первого файла. Команда call принимает метки в качестве объекта вызова. Используемая в командной строке, а не в сценарии или пакетном файле, команда Call игнорируется.
Синтаксис
call [[диск:][путь] имя_файла [пакетные_параметры]] [:метка [аргументы]]
Параметры
[диск:][путь] имя_файла - задает имя и местоположение пакетного файла для запуска. Параметр имя_файла должен иметь расширение .bat или .cmd.
пакетные_параметры - задает данные командной строки, используемые программой пакетной обработки, включая параметры командной строки, имена файлов, пакетные параметры (в диапазоне от %0 до %9) или переменные (например %baud%).
:метка - указывает метку, на которую должно быть передано управление программы пакетной обработки. При использовании команды call с этим параметром создается новый контекст пакетного файла, а управление передается инструкции, следующей за указанной меткой. Когда первый раз встречается конец пакетного файла (после перехода на метку), управление возвращается на инструкцию, следующую за инструкцией call. При втором достижении конца файла выполнение пакетной программы прекращается.
аргументы - задает данные командной строки, которые передаются в новый экземпляр программы пакетной обработки, начинающейся с :метки, включая параметры командной строки, имена файлов, пакетные параметры (в диапазоне от %1 до %9) или переменные (например %baud%).
Пример
Для вызова программы Checknew.bat из другого пакетного файла в тексте родительского пакетного файла введите следующую строку:
Call checknew
Если родительская пакетная программа принимает два пакетных параметра и требуется передать их в файл Checknew.bat, включите следующую команду в родительскую пакетную программу:
call checknew %1 %2