ГЛАВА 3 ПАКЕТНЫЕ ФАЙЛЫ
__________________________________________________________
В этой главе освещены следующие темы:
- Создание пакетного файла
- Выполнение файла autoexec.bat
- Параметры пакетного файла
- Запуск пакетного файла
__________________________________________________________
Чтобы избежать утомительного набора
часто повторяющейся
последовательности команд, вы можете поместить эти командные
строки в файл и присвоить последнему расширение .bat. Теперь
вам достаточно набрать имя этого файла и нажать ввод,
чтобы
содержащиеся в пакетном файле команды начались выполняться
в
той последовательности, в которой они следуют в пакетном файле
(порядок следования можно сделать условным).
Создать пакетный файл можно с
помощью к-л редактора,
например, Edlin.
В качестве последней командной строки файла
можно указать
имя другого пакетного файла.
Вы можете помещать в начало командных
строк символ @ для
отмены вывода командной строки на экран (эхо) во
время ее
исполнения.
Разрешается использование таких средств, как
< > >> и |.
Установка маршрута и дисковода в одной строке
затрагивает
и все последующие строки в файле. То
же можно сказать и о
среде.
Если существуют одновременно несколько внешних
команд с
одинаковым именем, то они выполняются в следующем порядке
(в
зависимости от расширения):
.com
.exe
.bat
Файл autoexec.bat
Этот пакетный файл также
содержит последовательность
командных строк, но отличается от обычных пакетных файлов тем,
что его выполнение начинается каждый раз, когда вы включаете
свой компьютер. MS-DOS автоматически
после включения
компьютера ищет этот файл в текущем каталоге, и если находит,
немедленно приступает к его выполнению. Если
такой файл не
найден, то на экран выводится стандартный запрос
ситемы на
ввод текущей даты и времени.
Если вы создаете
файл autoexec.bat, то вы должны
поместить его в корневой каталог диска MS-DOS.
- 344 -
Наиболее простой способ
создания пакетного файла
приводится ниже:
- Введите командную строку:
copy con имя_пакетного_файла.bat
- Нажмите ВВОД. Теперь вводимая
с консоли (клавиатура)
информация заносится в файл.
- Введите командную строку и нажмите ВВОД.
- Введите командную строку и нажмите ВВОД.
- Введите командную строку и нажмите ВВОД.
- ... и т.д.
- После введения последней
командной строки нажмите
одновременно клавиши Ctrl и Z
(CONTROL+Z).
- Нажмите ВВОД.
- На экране появится сообщение:
1 File(s) copyied
(Скопирован 1 файл )
Теперь для запуска созданного пакетного файла
введите его
имя (расширение не обязательно) и нажмите ВВОД.
Дополнительную гибкость
пакетному файлу придают
формальные параметры, реальные значения которых подставляются
в ходе выполнения пакетного файла. Эти параметры имеют вид %1
- %9, например dir %1 > %2. Параметр %0 всегда
заменяется
системой на имя дисковода (если указано)
и имя пакетного
файла. Если вы хотите использовать больше десяти параметров,
то следует обратиться к описанию команды shift в этой главе.
Если знак процента является частью имени к-л файла, то
этот
знак необходимо указывать дважды: abc%%d.exe.
Помимо десяти числовых формальных
параметров вы можете
использовать именованные формальные параметры,
указываемые
между двумя знаками процентов: %parameter%.
Отличие их от
числовых параметров заключается в том,
что их реальные
значения указываются вами не в
командной строке вызова
пакетного файла, а в среде (с помощью команды set),
откуда
MS-DOS будет выбирать их и подставлять
вместо формальных
параметров.
При вводе командной строки
вызова пакетного файла
необходимо помнить, что последовательность
в ней реальных
значений для числовых параметров этого пакетного файла должна
соответствовать нумерации этих числовых параметров.
- 345 -
Команды пакетной обработки
Ниже приведены команды
пакетной обработки, полное
описание которых будет дано ниже в этой главе:
Команда Значение
__________________________________________________________
call
Вызов одного пакетного файла из другого, без
завершения последнего.
echo
Вывод или отмена вывода эха или
вывод
текущего состояния.
for
Выполнение команды для группы файлов.
goto
Переход на указанную метку.
if
Выполнение команды при наличия некоторого
условия.
pause
Пауза в процессе выполнения файла.
rem
Вывод коментария.
shift
Увеличение количества формальных параметров.
__________________________________________________________
Все команды пакетной обработки
являются резидентными
(внутренними).
__________________________________________________________
CALL
(I)
Цель:
Вызов
одного пакетного файла из другого, без
завершения последнего.
Синтаксис:
call [дисковод:][маршрут] имя_пакетного_файла
[команда]
где:
команда - команда, выполняемая после выполнения
пакетного
файла.
Комментарий:
При указании имени пакетного файла
необходимо указывать
расширение .bat. По выполнении пакетного файла возобновляется
выполнение вызывавшего пакетного файла с команды указанной
в
командной строке вызова. Если опция "команда"
опущена, то
выполнение возобновляется с команды, непосредственно следующей
за командой call.
Примечание:
Нельзя использовать символы переадресации
ввода/вывода с
командой Call. Пакетный файл может выполнять
рекурсивное
обращение к самому себе, при условии,
что предусмотрено
условие окончания.
- 346 -
__________________________________________________________
ECHO
(I)
Цель:
Вывод
или отмена вывода эха или вывод
текущего состояния.
Синтаксис:
echo [on]
или
echo [off]
или
echo [сообщение]
Комментарий:
Обычно при выполнении команд соответствующие
командные
строки выводятся на экран (эхо). Отменить вывод эха
можно с
помощью опции off, а восстановить с помощью опции on. Если вы
введете команду echo без опций, то на экране появится текущее
значение (on или off).
Опцию "сообщение" можно применять для вывода
сообщений на
экран во время выполнения пакетного файла.
Символ @, помещенный в начало командной строки,
отменяет
эхо этой строки.
__________________________________________________________
FOR
(I)
Цель:
Выполнение команды
для группы файлов.
Синтаксис:
for %%cимвол
in группа do команда
(для пакетной
обработки)
for %cимвол in
группа do команда
(для интерактивной
обработки)
Комментарий:
Описываема команда присваивает каждому
элементу группы
переменную %%символ. "Символ" не должен быть
0-9, чтобы не
совпадать с %0-%9. "Группа" имеет следующий формат:
- 347 -
( элемент элемент ...)
или
если элемент (имя файла) содержит символы заполнители,
то
все элементы, кроме этого элемента, игнорируются,
а всем
соответствующим файлам присваивается переменная %%символ.
Пример:
Следующая команда присваивает переменную %%f
всем файлам
с расширением .txt и распечатывает их:
for %%f in (*.txt) do print %%f
Если вы используете команду
for вне пакетного файла
(интерактивная обработка), то вы должны указывать только один
знак процента перед "символом".
__________________________________________________________
GOTO
(I)
Цель:
Переход на указанную
метку, т.е. переход к выполнению
командной строки,
"помеченной" указываемой меткой.
Синтаксис:
goto [:]метка
Комментарий:
Метка может содержать пробелы, но не другие
разделители,
такие как точка с запятой или знак равно. Если пакетный
файл
не содержит метки, то выполнение пакетного файла прерывается.
Примечание:
Любая строка пакетного файла, начинающаяся
с символа (:),
игнорируется во время выполнения пакетного файла:
:begin
echo off
format a: /s
if errorlevel 0 goto end
echo ОШИБКА ФОРМАТИРОВАНИЯ
:end
echo КОНЕЦ
- 348 -
__________________________________________________________
IF
(I)
Цель:
Выполнение команды
при наличия некоторого
условия.
Синтаксис:
if [not] errorlevel
код_завершения команда
или
if [not] строка1
= = строка2 команда
или
if [not] exist
имя_файла команда
Комментарий:
Команда выполняется, а не игнорируется,
если указываемое
условие истинно. Описание условий приводится ниже:
код_завершения -
Число. При его совпадении с кодом
завершения предыдущей команды,
выполненной командным процессором,
или при большем по значению коде
завершения, условие считается
истинным.
строка1 = = строка2 - Условие считается
истинным, только
если строки идентичны после
подстановки параметров. Строки не
могут содержать такие разделители,
как запятая, точка с запятой, знак
равно или пробел.
имя_файла
Условие считается истинным, только
если указанный файл существует.
Если вы укажете
опцию [not], то команда будет
выполняться, только если условие ложно:
if not exist moifile.doc echo нет такого файла.
- 349 -
__________________________________________________________
PAUSE
(I)
Цель:
Пауза в процессе
выполнения файла.
Синтаксис:
pause [текст]
Комментарий:
Когда командный процессор
в ходе выполнения пакетного
файла встречает команду pause, то выполнение пакетного
файла
прерывается до тех пор, пока вы не нажмете какую-либо клавишу.
При этом на экран выводится текст (если был указан в командной
строке). Кроме этого на экран выводится сообщение:
Strike a key when ready ...
(Когда будете готовы нажмите любую клавишу)
Если вы нажмете
CONTROL+C, то на экране появится
следующий вопрос:
Terminate batch job (Y,N)?
(Прервать выполнение пакетного файла (Д/Н)?
)
Примечание:
Если эхо отменено, то ни строка pause ни строка
текста не
появятся на экране.
__________________________________________________________
REM
(I)
Цель:
Вывод комментария.
Синтаксис:
rem [комментарий]
Комментарий:
В строке комментария разрешены
в качестве разделителей
только пробелы, символы табуляции и запятые.
Примечание:
Если эхо отменено, то строка комментария не
выводится.
- 350 -
__________________________________________________________
SHIFT
(I)
Цель:
Смещение формальных
параметров пакетного файла.
Синтаксис:
shift
Комментарий:
С помощью команды shift вы можете получить
доступ к более
чем десяти параметрам, т.е. те параметры, которые следуют
за
десятым (%9) сдвигаются по одному к %9.
Команду shift можно использовать,
даже если количество
параметров меньше десяти. Обратите внимание
на то, что
обратной команды shift не существует,
так например, вы не
сможете восстановить параметр %0, существовавший до сдвига.
Пример:
Следующая пакетная программа копирует все
перечисленные в
командной строке файлы в указанный каталог:
set todir = %1
:one
shift
if "%1"=="" goto two
copy %1 %todir%
goto one
:two
set todir=
echo конец
Командная строка описанного выше
примера будет иметь
формат:
имя_пакетного_файла имя_каталога имя_файла
имя_файла.....
© KOAP
Open Portal 2000
|