Лабораторная работа № 2
по дисциплине “Операционные системы, среды и оболочки”
Создание пакетных файлов
Цель работы:
научиться создавать пакетные файлы для автоматизации выполнения работ в операционной системе.
Командный (или пакетный) файл в Windows — это обычный текстовый файл (в формате ASCII), с расширением bat или cmd, который содержит команды операционной системы, а также некоторые дополнительные инструкции и ключевые слова. Строками пакетного файла также могут быть вызовы исполняемых файлов (.com,.exe,.bat), метки и специальные команды пакетной обработки. Признаком метки является двоеточие в начале строки.
Пакетные файлы (ПФ) могут создаваться с помощью любого текстового редактора либо командой
COPY CON <имя файла>.BAT
Например, если записать в файл deltmp.bat следующие команды:
C:\
CD %TEMP%
DEL /F *.tmp
и запустить его на выполнение (набрать в командной строке deltmp.bat), то удалятся все файлы во временной директории Windows. Таким образом, исполнение командного файла приводит к тому же результату, что и последовательный ввод записанных в нем команд. Очевидно, что если приходится часто выполнять одни и те же действия, то использование командных файлов может сэкономить много времени.
Пакетный файл, состоящий из двух команд вызова
calc.exe
notepad.exe
вызовет стандартный Калькулятор, а при его закрытии вызовет Блокнот.
Общие правила оформления пакетных файлов:
для запуска исполняемого файла из пакетного следует просто указать его имя,
следует указывать полный путь доступа к файлам, если файл не содержится в текущем каталоге,
допускается использование подстановочных символов звездочка (*) или вопросительный знак (?) для замены наборов символов,
метка всегда содержится в отдельной строке и начинается с двоеточия,
при запуске каждой программы вырабатывается код ошибки выполнения – переменная errorlevel. В случае отсутствия ошибки errorlevel =0,
существование любого файла можно проверить с помощью операции exist:
значение операции exist имя файла равно True, если указанный файл существует.
для прекращения выполнения ПФ необходимо нажать клавиши CTRL+C;
в ПФ можно использовать символы переназначения ввода/вывода и конвейер команд;
При выполнении пакетного файла на экран выводятся все его команды. С помощью команды ECHO OFF можно отключить дублирование команд, идущих после нее. Чтобы отключить вывод одной команды на экран следует поставить перед ней знак @. Для восстановления вывода команд на экран используется команда ECHO ON или команда ECHO.
С помощью команды ECHO в пакетном файле можно выводить на экран строки с сообщениями.
Команда ECHO. (точка должна следовать непосредственно за словом "ECHO") выводит на экран пустую строку. Например,
@ECHO OFF
ECHO Привет!
ECHO.
ECHO Пока!
Часто бывает удобно для просмотра сообщений, выводимых из пакетного файла, предварительно полностью очистить экран командой CLS.
Используя механизм перенаправления ввода/вывода (символы > и >>), можно направить сообщения, выводимые командой ECHO, в определенный текстовый файл. Например:
@ECHO OFF
ECHO Привет! > hi.txt
ECHO Пока! >> hi.txt
С помощью такого метода можно, скажем, заполнять файлы-протоколы с отчетом о произведенных действиях. Например:
@ECHO OFF
REM Попытка копирования
XCOPY C:\PROGRAMS D:\PROGRAMS /s
REM Добавление сообщения в файл report.txt в случае
REM удачного завершения копирования
IF NOT ERRORLEVEL 1 ECHO Успешное копирование >> report.txt
Символы условной обработки
Символы условной обработки используются для ввода несколько команд одновременно и управления работой команд в зависимости от результатов их выполнения:
Амперсанд (&) разделяет несколько команд в одной командной строке.
Скобки группируют несколько команд.
Точка с запятой и запятая (; ,) разделяют параметры команд.
Символ (^) отменяет специальное использование управляющего символа, и управляющий символ можно использовать в тексте.
Двойной амперсанд (&&) запускает команду, стоящую за ним в командной строке, только если команда, стоящая перед этим символом была выполнена успешно.
Двойной символ канала (||) запускает команду, стоящую за этим символом, только если команда, идущая перед ним не была успешно выполнена.
Передача данных в командный файл
Довольно часто возникает необходимость создать один пакетный файл, но выполнять его каждый раз с различными данными. Возможны два способа передачи данных в пакетный файл:
с помощью списка замещаемых параметров,
с помощью системных переменных.
Замещаемые параметры командной строки . При использовании первого способа в тексте пакетного файла используются формальные параметры, имеющие имена %0, %2, …%9. Реальные значения этим параметрам присваиваются с помощью фактических параметров, которые указываются при запуске пакетного файла через пробелы:
<имя пакетного файла> <параметр1> <параметр2> .. <параметр9>
При выполнении пакетного файла формальный параметр %1 получает значение (замещается) <параметр1>, формальный параметр %2 получает значение <параметр2> и т.д. В формальном параметре %0 хранится имя самого пакетного файла.
Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то "лишние" переменные из %1 – %9 замещаются пустыми строками.
Например, пусть создан командный файл copier.bat следующего содержания:
@ECHO OFF
CLS
ECHO Файл %0 копирует каталог %1 в %2
XCOPY %1 %2 /S
Если запустить его из командной строки с двумя параметрами, например
copier.bat C:\Programs D:\Backup
то на экран выведется сообщение
Файл copier.bat копирует каталог C:\Programs в D:\Backup
и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.
При необходимости использования более 10 параметров, необходимо воспользоваться командой SHIFT.
Символ “%” можно использовать в командах внутри пакетного файла, но при этом необходимо повторить его дважды. Например, имя файла f%.exe должно выглядеть как f%%.exe.
При использовании второго способа (глобальных переменных) перед запуском пакетного файла с помощью команды SET необходимо создать глобальные переменные (это будут пользовательские системные переменные) и присвоить им заданные значения. Имена этих переменных при использовании в командах пакетного файла заключаются в символы “%” (например, %FILE% ).
При использовании параметров можно анализировать значение передаваемого в пакетный файл параметра, выделяя определенные его части, например, можно выделить только расширение файла-параметра или только имя. Для параметра с номером n (%n) допустимы синтаксические конструкции, представлены в таблице
Дополнительные возможности для замещаемых параметров |
|
Обозначение |
Описание |
%~Fn |
Переменная %n расширяется до полного имени файла |
%~Dn |
Из переменной %n выделяется только имя диска |
%~Pn |
Из переменной %n выделяется только путь к файлу |
%~Nn |
Из переменной %n выделяется только имя файла |
%~Xn |
Из переменной %n выделяется расширение имени файла |
%~Sn |
Значение операторов N и X для переменной %n изменяется так, что они работают с кратким именем файла |
%~$PATH:n |
Проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку. Естественно, здесь переменную PATH можно заменить на любое другое допустимое значение |