Прежде чем приступить к рассмотрению некоторых конкретных примеров пакетных файлов, необходимо знать, как они создаются. Ниже перечислены некоторые моменты, которые следует иметь в виду.
- Пакетные файлы — это простые текстовые файлы, поэтому использовать для их создания Notepad (или какой-то другой текстовый редактор) — вероятно, будет наилучшим выбором.
- Если вы решите применять WordPad или другой текстовый процессор, убедитесь, что создаете файл в формате простого текста.
- Сохраняйте пакетные файлы с расширением . bat.
- При назначении имен для пакетных файлов не используйте те же имена, что и у команд командной строки. Например, создав пакетный файл, который удаляет некоторые файлы, не называйте его Del .bat. Если вы сделаете это, он никогда не будет запущен! Причина состоит в следующем. Когда вы вводите нечто в приглашении командной строки, CMD первым делом проверяет, не является ли введенное внутренней командой. Если нет, то CMD затем проверяет (именно в таком порядке) файлы . com, . exe, .b at и . cmd на соответствие введенному имени. Поскольку все внешние команды используют расширения .сот или .exe, CMD даже не станет искать ваш файл .bat!
Когда пакетный файл создан, введите в него любые команды, так, как они вводились бы в командной строке, и включите любые необходимые пакетные инструкции.
НАЗАМЕТКУ
Если приходится создавать и использовать множество пакетных файлов, можно легко запутаться, если они будут разбросаны по всему диску. Поэтому имеет смысл создать новую папку, которая будет хранить все пакетные файлы. Вдобавок понадобится указать командной строке, что пакетные файлы следует искать именно в этой папке. Для этого добавьте путь к папке пакетных файлов в переменную среды PATH, как было описано в разделе “Работа с длинными именами файлов” ранее.
rem: добавление комментариев в пакетный файл
Первая из специфичных для пакетных файлов команд — это REM (сокращение от remark). Эта простая команда заставляет игнорировать все, что содержится в строке после REM. Разработчики пакетных файлов используют ее исключительно для добавления коротких комментариев в свои файлы:
- REM Этот пакетный файл переходит в папку на диске С
- REM и запускает CHKDSK в автоматическом режиме.
- С:
- CHKDSK /F
Кому это может понадобиться? Пожалуй, никому, если речь идет о коротких и понятных пакетных файлах, но некоторые из наиболее сложных программ, которые вы увидите далее в этой главе, могут показаться непостижимыми на первый взгляд. Несколько содержательных операторов REM могут помочь все прояснить (и не только для других, но даже для вас, когда вы заглянете в этот файл спустя несколько месяцев).
echo: отображ ение сообщ ений из пакетного файла
При обработке пакетного файла Windows 7 обычно показывает, что происходит, отображая каждую команду перед ее выполнением. Это замечательно, но часто лучше включить более выразительные описания, особенно если ваши пакетные файлы будут использовать другие. Сделать это позволяет команда ECHO. Для примера рассмотрим простой пакетный файл, который удаляет все файлы кэша Internet Explorer и очищает список последних открывавшихся документов, сообщая пользователю о том, что происходит:
ECHO Этот пакетный файл удаляет файлы кэша Internet Explorer
DEL "%localappdata%\microsoft\windows\temporary internet files\*.*"
ECHO Этот пакетный файл очищает список последних открывавшихся документов
DEL "%appdata%\microsoft\windows\recent items\*.lnk"
Основная идея состоит в том, что когда Windows 7 встречает команду ECHO, то просто отображает остальную часть строки. Звучит достаточно просто? А вот как выглядит вывод, полученный после запуска приведенного выше пакетного файла:
С:\>ЕСН0 Этот пакетный файл удаляет файлы кэша Internet Explorer Этот пакетный файл удаляет файлы кэша Internet Explorer
C:\>DEL "%localappdata%\microsoft\windows\temporary internet files\*.*"
C:\>ECHO Этот пакетный файл очищает список последних открывавшихся документов Этот пакетный файл очищает список последних открывавшихся документов
C:\>DEL "%appdata%\microsoft\windows\recent items\*.lnk"
Что за каша получилась? Проблема в том, что Windows 7 отображает команду, а потом выполняет ее — выводя строку после ECHO. К счастью, в Windows 7 предлагаются два решения этой проблемы.
- Чтобы предотвратить отображение выполняемых команд, нужно предварить их символом @:
@ЕСН0 Этот пакетный файл удаляет файлы кэша Internet Explorer
- Чтобы предотвратить отображение Windows 7 любых команд, поместите следующую строку в начало пакетного файла:
0ECHO OFF
Ниже показано, как будет выглядеть вывод при скрытых командах:
Этот пакетный файл удаляет файлы кэша Internet Explorer Этот пакетный файл очищает список последних открывавшихся документов
pause: временная приостановка выполнения пакетного файла
Иногда необходимо увидеть то, что отображает пакетный файл (например, листинг содержимого папки, сгенерированный командой DIR), прежде чем продолжить работу. Также может понадобиться предупредить пользователей, что должно произойти нечто важное, чтобы они могли выбрать вариант поведения. В обоих случаях можно применить команду PAUSE, чтобы временно остановить выполнение пакетного файла. Когда Windows 7 встречает PAUSE в пакетном файле, отображается следующее сообщение:
- Для продолжения нажмите любую клавишу . . .
Для продолжения обработки остальной части пакетного файла нажмите любую клавишу. Если не хотите продолжать, прекратите обработку, нажав комбинацию клавиш <Ctrl+C> или <Ctrl+Break>. Windows 7 затем запросит:
- Завершить выполнение пакетного файла [Y(да)/N(нет)]?
Введите <Y> для завершения либо <N> для продолжения выполнения пакетного файла.