Pers.narod.ru. Программы. BAT-файлы. Командные файлы в DOS/Windows

Материал по теме «Командные файлы»

 1. Определение командного файла. Командные (пакетные) файлы - особая категория исполняемых файлов. 

Расширение: *.bat (от англ. batch - "пакет", "группа").  Запуск командного файла осуществляется  так же, как запуск исполняемой программы, то есть, указывается имя файла и, если требуется, параметры.

Назначение: BAT-файлы служат  для организации взаимодействия пользователей с прикладными  программами.

Состав: текст,  который интерпретируется командным процессором. Строки этого текста могут представлять собой:

Каждая команда находится на отдельной строке.

 2. Команды пакетной обработки.

 а) REM                  комментарий в тексте файла. Обычно используют, чтобы временно убрать из текста какую-либо команду. Формат: REM [любая строка]

б) ECHO                               вывод на экран сообщений. Формат: ECHO [ON или OFF или Сообщение]

Параметры ON и OFF включают и выключают выдачу на экран системных сообщений ("эха").  Команда  ECHO  OFF используется, чтобы не  "засорять"  экран  при исполнении BAT-файла. Произвольная строка после ECHO  понимается как сообщение и без  изменений  выводится  на  экран.  Пустая  строка обозначается одной точкой. Примеры:

echo.                                                     Перейти к следующей строке;

echo Программа  не  найдена!       Выдает на экран сообщение "Программа не найдена!".

в) @.  Может быть только первым  символом строки и подавляет ее выдачу на экран.  Используется  только  в пакетном режиме. Пример:

 @echo off                           Выключаем "эхо"; из-за символа @ сама команда echo off тоже не выводится  на  экран;  этой  строкой  обычно начинаются командные файлы.

г) PAUSE              приостанавливает  вывод  на  экран,  выводит сообщение  "Нажмите любую клавишу..." и ждет нажатия любой клавиши.  Параметров не имеет.

д) IF  позволяет  проверять  условие  и  выполнять  ветвление  в  зависимости от результата проверки.

Общий вид команды: IF [NOT] [условие] [действие],  где "действие"  - любая команда,  выполняемая,  если истинно условие. Условие записывается в одной из трех форм,  поэтому команда IF имеет три формата.

Формат 1.  Проверка кода завершения  последней  перед  оператором  IF  команды. Используется конструкция следующего вида:  IF ERRORLEVEL число

Любая программа может  выработать в момент своего окончания собственный код завершения, который доступен  другим  программам  через переменную с именем ERRORLEVEL. Большинство команд и программ при нормальном  завершении устанавливают errorlevel=0. Задав условие if errorlevel 1, Вы  определите,  что  оно  будет выполнено,  если программа вырабатывает код  завершения больший, либо равный 1.

Формат 2. Проверка наличия файла в каталоге. Оператор IF имеет вид: IF EXIST имя файла

Команда проверяет, существует ли файл с заданным именем.  При обнаружении файла условие считается выполненным.  Можно использовать маску - тогда условие выполнено, если найден хотя бы один подходящий файл.

Формат 3. Сравнение двух строк. Оператор имеет вид:  IF [строка_1]==[строка_2]

Условие выполняется, если строки 1 и 2 совпадают. Чтобы застраховаться от случая,  когда одна из строк оказывается пустой, обе строки заключают в одинаковые символы, например, в квадратные скобки.

Любое из этих трех условий может задаваться со знаком логического отрицания NOT.  При этом истинность условия трактуется в обратном  смысле. Примеры:

if exist c:\autoexec.bat type c:\autoexec.bat 

если в головном каталоге диска c: есть файл autoexec.bat, вывести его на экран;

if not exist c:\WORK\*.* echo Нет файлов!

если в каталоге WORK нет ни одного файла, вывести соответствующее сообщение;

format a:

if errorlevel 1 echo Форматирование прошло не безупречно!

если программа format установила errorlevel больше  нуля,сообщить  об ошибке;

if %A%==Yes cls

если переменная с именем A равна строке 'Yes',  очистить экран.

Аналогично команда IF может использоваться из командной строки.

е) GOTO позволяет передавать управление на  заданную метку  Формат команды:  GOTO метка

Метка  начинается со знака : Пример:

if  %A%==Yes goto Clear

goto Not_Clear

:Clear

cls

:Not_Clear

Если переменная A совпадает со строкой Yes,  перейти на метку Clear и очистить экран. В противном случае пропустить очистку экрана.

ж) CALL осуществляет вызов одного командного файла из другого с последующим возвратом в вызывающий файл. Формат команды:  CALL [имя файла]

В имени вызываемого файла могут  содержаться дополнительные параметры,  которые обрабатываются вызванным файлом. Пример:

Вызывающий командный файл: (example.bat)

@echo off

echo Файл запущен!

call version

echo Продолжаем!

Вызываемый командный файл: (version.bat)

@echo off

echo Ваша версия операционной системы:

ver

pause

example.bat вызывает version.bat, после выполнения которого вновь получает управление.

з) Переменные в командных файлах используются для обмена информацией между отдельными  командами. Существуют два их вида:

1) переменная,  определяемая в цикле. Ее имя состоит символа процента (в старых версиях DOS/Windows - двух символов) и последующих букв,  например, %A. Набор значений, которые последовательно принимает такая переменная,  задается при ее определении в команде for (см. ниже).

2) переменная окружения. Она определяется  внутренней командой DOS вида

SET [имя]=[значение],

где имя и значение - произвольные строки,  и в течение  всего  сеанса работы хранится в специальной области памяти,  называемой "системным окружением".  Системное окружение  управляется  командным  интерпретатором command.com.  Чтобы  использовать переменную окружения в командном файле нужно ее имя заключить в символы процента %, например, командами

set weekday=sunday

echo %weekday%

переменной с  именем weekday присваивают значение sunday и выводят ее значение на экран командой ECHO.  Для удаления переменной  из  окружения используют строку вида set имя=

Для просмотра окружения можно использовать команду SET без параметров.

В DOS и Windows, как правило, используются следующие стандартные переменные окружения:

 и) FOR обеспечивает циклическое выполнение  команд.  Формат:  FOR переменная IN (набор) DO действие

Понятие переменной  определено выше.  Набор - это одна или несколько строк,  разделенных пробелами или запятыми. Чаще всего в качестве  элементов набора выступают имена файлов или маски.  Действие - любая допустимая команда.  Цикл работает следующим  образом:  переменная последовательно  принимает значения элементов набора и они подставляются в текст команды. Примеры:

For %a in (*.txt) do copy %a con

Переменной %%a  последовательно присваиваются имена файлов с расширением txt из текущего каталога и каждый файл выводится на экран.

for %r in (*.*) do if exist a:\%r echo %r есть на диске a:

Команда перебирает файлы текущей директории и выясняет,  есть  ли  на диске a:  файл с таким же именем. Если такой файл существует, печатается сообщение. Вместо переменной %%r в команде ECHO каждый раз подставляется очередное имя файла.

for %z in (0,1,2,3,4,5,6,7,8,9) do if %z==%test% echo z=test=%z

Если переменная %z, принимающая значения цифр от 0 до 9, совпадает с переменной окружения test, печатается сообщение.

FOR может использоваться и в командной строке,  например, для многократного выполнения команды, в которой нельзя использовать маску. Пример:

FOR %A IN (*.txt) DO TYPE %A

Все найденные в текущей директории файлы с расширением TXT последовательно выводятся на экран.

 к) Параметры командного файла.  При запуске  из  командной  строки командному файлу могут быть переданы параметры.  Они разделяются пробелами  и  количество  их не может превышать девяти.  Изнутри пакетного файла параметры доступны через строки вида %0,  %1,  ...,  %9, где %0 - имя самого  командного файла,  %1 - имя первого параметра и так далее.  Например, мы  запускаем командный файл MOVA.BAT командой mova.bat *.tmp *.txt *.doc

После запуска параметр %0 равен  строке  "mova.bat",  параметр  %1 - строке "*.tmp" и т.  д. Наш командный файл должен перемещать файлы, подходящие под переданные ему маски,  на диск a:. Для первого параметра это легко сделать двумя командами:  copy %1 a:\%1 и del %1.  Первая копирует  файлы на диск a:,  вторая уничтожает источник копирования.  Для  второго  параметра мы могли бы повторить те же команды, подставив в них %2 вместо  %1. Но программа сразу же становится нерациональной, тем более, что число параметров заранее неизвестно.  Помочь нам может команда SHIFT, которая сдвигает параметры командного файла на один влево.  После применения SHIFT параметру %0 присваивается старое значение %1,  в нашем случае это  строка "*.tmp",  а параметр %1 принимает значение "*.txt".  Теперь этими  же  двумя командами мы можем обработать любое число параметров.  Позаботившись об условии выхода из программы, получаем ее окончательный текст:

@echo off

:LOOP

copy %1 a:\%1

del %1

shift

if not [%1]==[] goto LOOP

Благодаря команде SHIFT мы каждый раз обращаемся лишь  к  первому  из  переданных параметров и правильность работы не зависит от числа переданных параметров.  Если очередная строка с маской не пуста,  оператор goto  LOOP передает управление к началу программы.

 л) Дополнительные средства для написания командных файлов.

Рассмотренные выше  команды пакетной обработки позволяют организовать  автоматический запуск программ и обработку файлов.  Не хватает лишь возможностей пользователя влиять на этот процесс,  в частности, возможности  выполнять действия в зависимости от выбора с клавиатуры.

В состав большинства версий DOS/Windows включена внешняя команда choice, служащая для выбора действия. Формат команды:

CHOICE [/C:клавиши] [/N] [/T:выбор,время] [сообщение]

Здесь сообщение - любая строка текста,  клавиши  -  список  буквенных  обозначений  клавиш,  допустимых  для  выбора.  По умолчанию прописные и  строчные буквы не различаются,  а если список клавиш не указан, принимается /C:YN.  Параметр /N запрещает вывод после сообщения списка клавиш и  знака вопроса,  а после параметра /T могут быть указаны выбор, принимаемый при отсутствии ввода с клавиатуры и время в секундах,  через которое  он будет сделан.

Результат работы команды - установка значения ERRORLEVEL  равным  порядковому номеру в списке выбранной клавиши.  Например,  после ввода команды

choice /c:01 /n /t:0,5 Продолжить?(1-да,0-нет)

значение ERRORLEVEL будет установлено в 1 при нажатии клавиши  0  или  отсутствии ввода с клавиатуры в течении 5 секунд,  а при нажатии клавиши 1 программа установит значение ERRORLEVEL, равное 2.

Скачать CHOICE.COM в архиве ZIP (2 Кб)

Рейтинг@Mail.ru

вверх гостевая; E-mail
Hosted by uCoz