Вывод сообщений в BAT файлах

Понятие пакетного файла

Пакетный файл (англ. 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