Понятие пакетного файла
Пакетный файл (англ. batch file) — текстовый файл в MS-DOS или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла, программа — интерпретатор (как правило COMMAND.COM или CMD.EXE) читает его строка за строкой и последовательно исполняет команды. Пакетный файл — аналог shell script в Unix-подобных операционных системах.
Пакетные файлы полезны для автоматического запуска приложений. Основная область применения — автоматизация наиболее рутинных операций, что регулярно приходится совершать пользователю компьютера. Примерами таких операций могут служить — обработка текстовых файлов; копирование, перемещение, переименование, удаление файлов; работа с папками; архивация; создание резервных копий баз данных и т. п. Пакетные файлы поддерживают операторы if и goto (а в системах семейства Windows NT и расширенный оператор for), что позволяет обрабатывать результаты выполнения предыдущих команд или приложений и в зависимости от этого выполнять дальше тот или иной блок команд (как правило, в случае удачного завершения приложение возвращает 0 в переменной errorlevel; в случае неудачного — 1 или большее значение).
Пакетные файлы в DOS имеют расширение.bat; для других операционных систем они могут иметь другие расширения — например,.CMD в Windows NT
Пакетные файлы могут содержать как внутренние команды, обрабатываемые непосредственно COMMAND.COM или CMD.EXE, так и обращения к внешним утилитам, существующим в виде отдельных программ (.EXE файлов). Данные программы значительно расширяют возможности пакетных файлов
История
Программирование пакетных файлов появилось в MS-DOS и Windows с самого зарождения этих операционных систем. Командные интерпретаторы этих систем предлагают два режима работы: интерактивный режим (когда пользователь непосредственно вводит команды в командной строке и немедленно их исполняет) и пакетный режим (когда пользователь запускает предварительно записанную последовательность команд). Концепция обоих режимов была почерпнута из различных Unix—оболочек, равно как и из других текстовых интерфейсов командной строки начала 1980-х годов, таких как CP/M.
Коммандный интерпретатор в MS-DOS имеет название COMMAND.COM. Эволюция этой ветви пакетного программирования прошла через различные версии MS-DOS к Windows 95, Windows 98 и, наконец, к Windows Me. Наиболее известным пакетным файлом в этих системах является AUTOEXEC.BAT, специальный пакетный файл, который исполняется во время загрузки операционной системы.
Новые версии Windows — Windows 2000, Windows XP и Windows Vista основаны не на MS-DOS, а на Windows NT. NT-подобные системы включают интерпретатор cmd.exe, который частично совместим с COMMAND.COM. Некоторые старые возможности MS-DOS недоступны, однако вместо них появились дополнительные возможности и команды. COMMAND.COM до сих пор включается в NT-подобные системы для обеспечения лучшей обратной совместимости.
Существуют различные другие командные интерпретаторы, разработанные не компанией Microsoft и предоставляющие расширенный синтаксис команд для пакетного программирования. Примером может служить 4DOS.
Также имеются различные компиляторы пакетных файлов, превращающие пакетные файлы в исполняемые программы.
Редактирование bat файлов
Расширение BAT получилось от слова Batch (пакет).
Так как эти файлы обычные ASCII файлы, то Вы можете их править в любом текстовом редакторе, например NotePad.
Сохранять файл необходимо с расширением bat
Контекстное меню Windows предусматривает специальный пункт меню для редактирования этих файлов.
При выборе этого пункта откроется блокнот и сможете изменять файл.
Команды BAT файлов
Специальных команд, которые используются в BAT файлах не много. Именно специальных, которые могут пригодиться при создании логики командного файла. Конечно, эти команды относятся к внутренним командам MS DOS и могут использоваться в командной строке, но все-таки эти команды обретают смысл только в пакетных файлах.
Call – Вызов одного пакетного файла из другого
Echo – Вывод сообщений и переключение режима отображения команд на экране
For – Запуск указанной команды для каждого из файлов в наборе
Goto – Передача управления в отмеченную строку пакетного файла.
If – Оператор условного выполнения команд в пакетном файле
Pause – Приостановка выполнения пакетного файла и вывод сообщения
Rem – Помещение комментариев в пакетные файлы и файл CONFIG.SYS
Shift – Изменение содержимого (сдвиг) подставляемых параметров для пакетного файла
Кстати Вы можете легко получить подсказку по каждой этой команде в сеансе MS DOS используя ключ /?
Копирование файлов
Рассмотрим такой пример. Вы постоянно работаете с тремя файлами, которые находятся в разных каталогах жесткого диска, и часто создаете их резервные копии на USB-flash-drive. Для этого потребуется заходить в каждый каталог и копировать файлы по отдельности на флэшку.
Если написать простенький пакетный файл, то перечисленные действия сведутся к его запуску.
Предположим, что полные пути и имена файлов таковы: D:\Work\Profits.xls, D:\Home\Home.doc и C:\MyDocs\Oplata.doc, а G:\ – съемный флэш-диск для резервной копии. Тогда нужный пакетный файл будет выглядеть так:
Copy D:\Work\Profits.xls G:\Backup\
Copy D:\Home\Home.doc G:\Backup\
Copy C:\MyDocs\Oplata.doc G:\Backup\
Pause
Удаление файлов
Рассмотрим следующий пример. Многие пользователи иногда очищают содержимое временных каталогов. Для этого необходимо перейти в соответствующую папку (их может быть и две), выделить содержимое и удалить. После написания bat-файла очистка временных каталогов выполняется запуском файла с Рабочего стола. Итак, содержимое файла:
Del /F /S /Q %temp%
Del /F /S /Q %tmp%
Pause
Вывод сообщений в BAT файлах
Для вывода сообщения в BAT файлах используется команда echo:
Вывод сообщений и переключение режима отображения команд на экране.
ECHO [ON | OFF] ECHO [сообщение]
Ввод ECHO без параметров позволяет выяснить текущий режим отображения команд.
Создание программ
В BAT файлах можно использовать любые команды MS DOS. Смысл нашей программы будет в том, чтобы она создала папку и скопировала туда содержимое текущей папки.
В BAT файлах можно использовать любые команды MS DOS.
Смысл нашей программы будет в том, чтобы она создала папку и скопировала туда содержимое текущей папки.
Пример:
· Echo off
· Cls
· Echo start backup
· Mkdir backup
· Copy *.* backup
· Echo end backup