Пример 4.
Допустим, в общедоступном каталоге имеется программа NOTES.EXE, реализующая работу с картотекой/записной книжкой. Такую программу пользователь должен запускать с разными параметрами — именами картотек, которые находятся в разных каталогах:
— картотека TELEF в каталоге TEL,
— картотека PAPERS в каталоге PAPERS,
— картотека PERSON в каталоге ADMIN.
При обычном способе запуска пользователю пришлось бы набирать каждый раз по две команды с длинными именами, например:
cd \tel
notes telef
Можно создать в общедоступном каталоге командный файл, который позволит осуществлять необходимые вызовы с использованием простых однобуквенных мнемонических имен. Такой командный файл с именем N.BAT может иметь вид (выделение меток большими буквами здесь сделано лишь для наглядности):
echo off
if %1= goto exit
if %1= t goto TEL
if %1= p goto PAP
if %1= s goto PERS
goto exit
:TEL
cd \tel
notes telef
goto exit
:PAP
cd \papers
notes papers
goto exit
:PERS
cd \admln
notes person
:ехit
Обращение к указанному файлу при вызове разных картотек должно иметь вид:
n= t или n= р или n= s
При этом буквы t, p, s должны быть малыми, поскольку именно в таком виде они заданы в условиях операторов IF.
Отсутствие букв t, p или s-при вызове этого файла приведет к переходу на метку exit.
Команда FOR.
Обеспечивает циклическое выполнение команд ДОС. При этом можно задать формальный параметр и список фактических параметров (обычно—имен файлов), которые последовательно подставляются вместо формального параметра в текст исполняемой команды.
Пример 5.
Пусть имеется необходимость систематически копировать файлы PROQ.PAS, PROG.OBJ и PROG.EXE из рабочего каталога на виртуальный диск D:. С этой целью можно в соответствующем командном файле дать команду:
for %%A in (PAS OBJ EXE) do copy PROG.%%A d:
Здесь формальный параметр %%А последовательно сопоставляется со списком фактических параметров в круглых скобках и используется в команде COPY, которая в данном случае сработает 3 раза подряд.
Подставив в качестве второго аргумента команды COPY вместо имени D: еще один формальный параметр %1, можно будет менять назначение копирования, задавая его с терминала.
Команда SHIFT.
Вызывает сдвиг списка формальных параметров относительно списка фактических параметров. Так, если в командном файле фигурируют формальные параметры %1 и %2, а в обращении к командному файлу — фактические параметры А, В, С, D, то сначала соответствие формальных и фактических параметров выглядит следующим образом:
%1=А %2=В Однократное применения команды SHIFT дает следующее соответствие:
%1=В %2=С Двукратное применение вызывает дальнейший сдвиг:
%1=С %2=D
Пример 6.
Пусть стоит задача, обратная той, которая рассмотрена в примере 5; а именно, — нужно копировать на виртуальный диск D: файлы, имена которых пользователь будет вводить с терминала Эту задачу позволит решить командный файл следующего вида;
echo off
:loop
сору % 1 d:
shift
goto loop
Если дать этому файлу имя D.BAT и вызвать его с произвольным числом аргументов:
d f.l f.2 f.3 f.4 f.5 то будет происходить последовательное присваивание формальному параметру % 1 значений F.I, F.2, F.3, F.4, F.5 и циклическое исполнение команд COPY и SHIFT. После исчерпания фактических параметров команда COPY выдаст сообщение об ошибке, поскольку ее первый аргумент будет отсутствовать. В этот момент пользователь сможет прервать работу командного файла, нажав клавиши Ctrl и С.
Достарыңызбен бөлісу: |