|
|
Вызывает сдвиг списка формальных параметров относительно списка фактических параметров. Так, если в командном файле фигурируют формальные параметры %1 и %2, а в обращении к командному файлу — фактические параметры А, В, С, D, то сначала соответствие формальных и фактических параметров выглядит следующим образом:
%1=А %2=В Однократное применения команды SHIFT дает следующее соответствие:
%1 = В %2=С Двукратное применение вызывает дальнейший сдвиг:
%1=С %2=D
Пример 6. Пусть стоит задача, обратная той, которая рассмотрена в примере 5; а именно, — нужно копировать на виртуальный диск D: файлы, имена которых пользователь будет вводить с терминала. Эту задачу позволит решить командный файл следующего вида:
echo off :loop
copy %1 d: shift goto loop
Если дать этому файлу имя D.BAT и вызвать его с произвольным числом аргументов:
d f.1 f.2 f.3 f.4 f.5
то будет происходить последовательное присваивание формальному параметру %1 значений F.l, F.2, F.3, F.4, F.5 и циклическое исполнение команд COPY и SHIFT. После исчерпания фактических параметров команда COPY выдаст сообщение об ошибке, поскольку ее первый аргумент будет отсутствовать. В этот момент пользователь сможет прервать работу командного файла, нажав клавиши Ctrl и.С )).
Вложенные вызовы командных файлов. Вложенные (рекурсивные) вызовы командных файлов с возвратом, вообще говоря, не предусмотрены в ДОС. Если из одного командного файла Х.ВАТ вызвать другой командный файл — Y.BAT, то управление уже не возвращается обратно в Х.ВАТ.
Вложенные вызовы с возвратом, однако, возможны, если применять особый способ — обращение к командному процессору COMMAND.COM с указанием в качестве аргумента имени вызываемого командного файла.
Пример 1. Пусть имеется два командных файла — «вызывающий» Х.ВАТ и «вызываемый» Y.BAT. Оформление вызова Y.BAT из Х.ВАТ и возврат обратно осуществляется согласно схеме, представленной на рис. 2.3.
Из приведенной схемы видно, что обращение к командному процессору вида COMMAND/C позволяет приостановить исполнение текущего командного файла Х.ВАТ и начать исполнение Y.BAT. Возврат из Y.BAT осуществляется специальной командой EXIT. Таким образом можно структурировать командные файлы. При этом есть, впрочем, и свои потери, поскольку при вызове еще одной копии командного процессора (C0MMAND.COM) расходуется дополнительно около 4 Кбайт оперативной памяти.
Брябрин В.М. |