- •Инструменты автоматизации в операционной системе windows Оболочка командной строки ос Windows
- •Общие сведения о командной строке. Язык интерпретатора Cmd.Exe
- •Командные файлы
- •Общие сведения о командных файлах
- •Проверка значения переменной
- •Проверка условия
- •Проверка существования заданного файла
- •Проверка наличия переменной среды
- •Проверка кода завершения предыдущей команды
- •Работа с переменными среды Windows
Общие сведения о командных файлах
Язык оболочки командной строки (shell language) в Windows реализован в виде командных (их также называют пакетными или bat-файлами) файлов, которые позволяют автоматизировать выполнение обычных (типовых) задач управления процессами операционной системы. Командный файл в Windows — это обычный текстовый файл с расширением bat или cmd, в котором записаны допустимые команды операционной системы (как внешние, так и внутренние), а также некоторые дополнительные инструкции и ключевые слова, придающие командным файлам некоторое сходство с алгоритмическими языками программирования. Команды интерпретатора командной строки, записанные в пакетные файлы, будут выполняться точно так же, как если бы пользователь вводил их с клавиатуры. Файлы являются наиболее удачным решением для реализации простых алгоритмов, связанных с операциями над файлами.
Например, для создания командного файла, отображающего содержимое текущих каталогов дискет в приводах А и В, достаточно ввести в командной строке следующую информацию:
C:>COPY CON DIRAB.BAT «Enter» C:>CLS «Enter» C:>DIR A: «Enter» C:>DIR B: «Enter» C:>«F6» «Enter» |
Пакетный файл с именем DIRAB.BAT, отображающий содержимое каталогов |
Командный файл запускается путем ввода его спецификации в ответ на приглашение в командной строке, причем расширение ВАТ допускается не указывать:
C:>DIRAB |
Вызов командного файла |
При необходимости прервать выполнение пакетного файла следует нажать комбинацию клавиш Ctrl-Break .
При создании и использовании командных файлов полезно знать следующее:
в конце одного файла можно специфицировать имя другого с тем, чтобы последовательно выполнить два файла путем указания в командной строке только первого из них;
текущий привод, текущие каталоги и состояние окружения ОС при входе в файл не изменяются;
файл может содержать любые команды, допустимые в командной строке. Кроме того, имеются дополнительные команды, используемые главным образом только в таких файлах.
Основные команды командных файлов
Дублирование команд на экране: ECHO [ON | OFF | [сообщение] ]
Назначение - включение (отключение) эхо-отображения (дублирования) строк файла при их интерпретации (выполнении), а также отображение заданного сообщения.
Отключение эхо-отображения отдельной команды: «@»
Например, @ ECHO OFF
Для вывода на экран пустой строки с целью разграничения фрагментов текста нужно использовать команду в виде «ECHO:» или с сообщением из неотображаемого символа @, например:
@ЕСНО OFF ; ECHO:
Приостановка выполнения файла: PAUSE [сообщение]
По команде Pause обработка пакетного файла временно прекращается и на экран выдается сообщение: Strike a key when ready... (Затем нажмите любую клавишу)
Комментарии в файле: REM [комментарии]
Команду Rem удобно использовать при отладке файла для временного запрета интерпретации команды путем вставки Rem перед ней.
Вызов одного пакетного файла из другого: CALL file [список аргументов]
Когда выполнение командного файла file завершается, управление возвращается в точку его вызова.
Параметризация файлов
Командный интерпретатор Windows поддерживает передачу информации в пакетные файлы через аппарат параметров. В теле файла используются параметры, а при его вызове задаются аргументы, замещающие их. В качестве параметров применяются символы %0, %1, …, %9.
Действует принцип позиционного соответствия параметров и аргументов, т.е. вместо %i-го параметра подставляется i-ый аргумент. Если в командной строке при вызове файла используется меньше девяти аргументов, то лишние параметры из %1 — %9 замещаются пустыми строками. И наоборот, избыточные аргументы отбрасываются.
Изменение соответствия параметров аргументам пакетного файла: SHIFT
При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT, которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение аргумента, следующего в командной строке за старым значением %9. Если же такой аргумент не задан, то новое значение %9 — пустая строка.
Рассмотрим пример. Пусть командный файл my.bat вызван из командной строки следующим образом:
MY.BAT P1 P2 P3
Тогда %0=MY.BAT, %1=P1, %2=P2, %3=P3, параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=P1, %1=P2, %2=P3, параметры %3 – %9 – пустые строки.
При включении расширенной обработки команда SHIFT поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть числом от 0 до 9. Например, в следующей команде:
SHIFT /2
параметр %2 заменяется на %3, %3 на %4 и т.д., а параметры %0 и %1 остаются без изменений.
Перенаправление ввода-вывода
Под перенаправлением ввода-вывода понимают замену источника данных при вводе информации в программу или приёмника выводимых результатов работы программы без ее модификации. Источниками данных и приёмниками результатов являются файлы, а также посимвольные устройства (принтер, монитор).
Проиллюстрируем на примере команды COPY. Краткий отчет о своей работе команда COPY выдает на стандартное УВВ (в роли которого, как правило, выступает CON (экран дисплея)). Замену стандартного УВВ в командной строке можно осуществить путем указания в ней одной из следующих конструкций:
copy myfile.txt text1.txt - скопировать содержимое файла myf1le.txt в файл text1.txt;
copy myfile.txt prn - отпечатать содержимое файла myfile.txt на принтере;
copy myfile.txt nul - скопировать содержимое файла myfile.txt на фиктивное устройство;
copy con myfile.txt - ввести информацию в файл myfile.txt с клавиатуры.
dir > filelist.txt - вывести содержимое рабочего каталога не на экран дисплея, а в файл filelist.txt;
type myfile.txt >prn - распечатать содержимое файла myfile.txt на принтере вместо отображения на экране дисплея;
copy myfile.txt техт.тхт > nul — скопировать содержимое файла, но не выдавать отчет;
prog < input.txt > output.txt — обеспечить ввод исходных данных в программу prog из файла input.txt, а вывод результатов ее работы - в файл output.txt.
Операторы перехода
Командный файл может содержать метки и команды GOTO перехода к этим меткам. Любая строка, начинающаяся с двоеточия :, воспринимается при обработке командного файла как метка. В команде перехода можно задавать в качестве метки перехода строку :EOF, которая передаст управление в конец текущего пакетного файла. Рассмотрим на следующем примере:
@ECHOOFF COPY%1 %2 GOTOLabel1 ECHOЭта строка не выполнится :Label1 REMПродолжение выполнения DIR%2 |
Отключение вывода команд файла при выполнении
Когда мы доходим до команды GOTOLabel1 выполнение продолжается со строки REMПродолжение выполнения |
Организация разветвлений в командных файлах
IF … ELSE (ключевое слово ELSE может отсутствовать)
Если заданное после IF условие принимает истинное значение, система выполняет следующую за условием команду (или несколько команд, заключенных в круглые скобки), в противном случае выполняется команда (или несколько команд в скобках), следующая за ключевым словом ELSE.
В командных файлах можно выполнять обработку условий нескольких типов.