Лабораторная работа Командные файлы Windows
Постановка задачи
Цель работы: научиться использовать Командные файлы в операционной системы Windows.
Теоретические предпосылки
Командный файл представляет собой обычный текстовый файл с расширением bat (cmd), в котором записаны допустимые команды операционной системы, а также некоторые дополнительные инструкции и ключевые слова, придающие командным файлам некоторое сходство с алгоритмическими языками программирования. Например, если записать в файл deltmp.bat следующие команды:
С:\
CD %TEMP%
ATTRIB -R *.tmp
DEL *.tmp
и запустить его на выполнение, то будут удалены все файлы во временном каталоге Windows. Таким образом, исполнение командного файла приводит к тому же результату, что и последовательный ввод записанных в нем команд. Командные файлы широко используются при выполнении многих задач, связанных с администрированием системы.
В командных файлах можно использовать комментарии, т. е. строки, которые никак не влияют на выполнение этого файла. Комментарии вносятся с помощью ключевого слова rem, например
REM Снимем атрибут "Только чтение" ATTRIB -R *.tmp
REM Удалим файлы с расширением tmp DEL *.tmp
Условное выполнение команд
В командной строке Windows можно использовать специальные символы, которые позволяют вводить несколько команд одновременно и управлять работой команд в зависимости от результатов их выполнения. С помощью таких символов условной обработки можно содержание небольшого пакетного файла записать в одной строке и выполнить полученную составную команду.
Используя символ амперсанда &, можно разделить несколько утилит в одной командной строке, при этом они будут выполняться друг за другом. Например, если набрать командную строку
DIR & PAUSE & COPY /?
и нажать клавишу <Enter>, то вначале на экран будет выведено содержимое текущего каталога, а после нажатия любой клавиши — встроенная справка команды copy.
Символ ^ позволяет использовать командные символы как текст, т. е. при этом происходит игнорирование значения специальных символов. Например, если ввести в командной строке
ECHO Абв & COPY /?
и нажать клавишу <Enter>, то произойдет выполнение подряд двух команд: echo Абв и copy /?. Если же выполнить команду
ECHO Абв ^& COPY /?
то на экран будет выведено
Абв & COPY /?
В этом случае просто выполняется одна команда echo с соответствующими параметрами.
Условная обработка командосуществляется с помощью символов && и | | следующим образом. Двойной амперсанд && запускает команду, стоящую за ним в командной строке, только в том случае, если команда, стоящая перед амперсандами была выполнена успешно. Например, если в корневом каталоге диска с: есть файл plan.txt, то выполнение строки
TYPE C:\plan.txt && DIR
приведет к выводу на экран этого файла и содержимого текущего каталога. Если же файл c:\pian.txt не существует, то команда dir выполняться не будет.
Два символа || осуществляют в командной строке обратное действие, т. е. запускают команду, стоящую за этими символами, только в том случае, если команда, идущая перед ними, не была успешно выполнена. Таким образом, если в предыдущем примере файл c:\plan.txt будет отсутствовать, то в результате выполнения строки
TYPE C:\plan.txt || DIR
на экран выведется содержимое текущего каталога.
Отметим, что условная обработка действует только на ближайшую команду, т. е. в строке
TYPE C:\plan.txt && DIR & COPY /?
команда copy /? запустится в любом случае, независимо от результата выполнения команды TYPE C:\plan.txt.
Несколько утилит можно сгруппировать в командной строке с помощью скобок.
Рассмотрим, например, две строки:
TYPE C:\plan.txt && DIR & COPY /?
TYPE C:\plan.txt && (DIR & COPY /?)
В первой из них символ условной обработки && действует только на команду dir, во второй — одновременно на две команды: dir и copy.
Запуск программ и документов
Синтаксис команды start имеет следующий вид:
START ["заголовок"] [/Dпутъ] [/I] [/MIN] [/MAX] [/SEPARATE|/SHARED] [/LOW| /NORMAL/HIGH|/REALTIME] [/WAIT] [/В] [команда/программа] [параметры]
Если параметр команда/программа определяет внутреннюю команду интерпретатора cmd.exe или пакетный файл, то для их выполнения в новом (если не указан ключ /B) окне автоматически запускается интерпретатор команд cmd.exe с ключом /K. Таким образом, в этом случае новое окно не будет закрыто после завершения команды. Если же запускается не внутренняя команда cmd.exe и не пакетный файл, то эта программа запускается в графическом или текстовом окне.
В случае, когда первым элементом командной строки является слово cmd без расширения и пути к файлу, обработчик команд перед выполнением строки заменяет слово cmd на значение переменной comspec (полный путь к командному интерпретатору), что позволяет избежать неожиданного запуска случайных версий файла CMD.exe.
Здесь синтаксис подобен синтаксису для переменной path, т. е. отдельные элементы разделяются точкой с запятой. Если ни одного файла с заданными по умолчанию расширениями не найдено, интерпретатор команд проверяет, задает ли указанное имя существующий каталог. Если это так, то команда START запускает Проводник Windows и открывает в нем указанный каталог.
Параметр заголовок в команде start определяет заголовок создаваемого окна. Например:
START "Копирование данных" copier.bat
Если команда start открывает новое командное окно, то в нем можно сразу указать рабочий каталог. Это делается с помощью параметра путь.
Применение ключа /I означает, что новой операционной средой станет исходная среда, переданная командным интерпретатором cmd.exe, а не текущая среда командного окна.
Если указан ключ /MIN, то запуск команды/программы происходит в свернутом окне, если /MAX — то в развернутом (максимизированном) окне.
Ключи /SEPARTR и /SHARED используются для указания режима запуска 16-разрядных приложений Windows. Если указан ключ /SEPARATE, тo запуск такой программы происходит в отдельной области памяти, если /SHARED — то в общей области памяти.
Следующие четыре ключа отвечают за приоритет запускаемой задачи. Применение ключа /LOW означает, что приложение запускается с приоритетом IDLE, ключа /NORMAL — с приоритетом NORMAL, ключа /HIGH — с приоритетом HIGH, ключа /REALTIME — с приоритетом REALTIME.
Ключ /WAIT используется для запуска приложения с ожиданием его завершения.
Если указан ключ /B, то запуск приложения происходит без создания нового окна (конечно, если это возможно). Таким образом, если с этим ключом запускается внутренняя команда cmd.exe или пакетный файл, то новая копия командного интерпретатора будет запущена в текущем командном окне.