Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Рекурсивные (вложенные) вызовы командных файлов

Командные файлы с параметрами

При вызове командного файла можно в командной строке задавать последовательность аргументов, отделенных друг от друга пробелами, которые будут замещать формальные параметры при интерпретации строк bat-файла. Допускается использовать до 10 формальных параметров с именами %0, %1, …, %9. Действует принцип позиционного соответствия параметров и аргументов, т.е. вместо %0 подставляется имя самого командного файла, вместо %1 подставляется первый аргумент и т.д.

Пример: Пусть имеется командный файл pf.bat, содержащий строки:

@ECHO OFF
TYPE %1
PAUSE
TYPE %2
PAUSE

Запустить его на выполнение можно, набрав команду pf.bat f1.txt f2.txt. Результатом работы станет вывод на экран содержимого файла f1.txt, а затем, после нажатия клавиши – файла f2.txt.

Для обработки неизвестного заранее количества параметров можно использовать команду shift – сдвиг списка формальных параметров относительно списка аргументов. Если после операции сдвига выполнять возврат (GOTO) к обработке параметра, то количество аргументов – фактических параметров – может ограничиваться только длиной командной строки. Тогда первому формальному параметру будет поочередно соответствовать 1-й, 2-й, 3-й и т.д. фактический параметр. Такой «цикл» должен завершиться, когда закончатся фактические параметры (т.е. очередной параметр окажется пустым).

Пример: Если в конце списка аргументов написать символ Y, а первой строкой «цикла» сделать IF %1==Y GOTO m, то произойдет переход на метку m, когда закончится список фактических параметров.

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

Пример:

Для добавления маршрута поиска к имевшимся ранее в командный файл можно включить строку @SET PATH=%PATH%;H:\PAS.

Рекурсивные (вложенные) вызовы командных файлов

В общем случае (в первых версиях по 3.2 включительно) в MS-DOS не были предусмотрены вложенные вызовы командных файлов с возвратом. Однако они возможны, если применить особый способ – обращение к командному процессору command.com с указанием в качестве аргумента имени вызываемого командного файла.

Пример: Пусть имеется два командных файла – «вызывающий» x.bat и «вызываемый» y.bat. Оформление вызова y.bat из x.bat и возврат обратно осуществляется по следующей схеме:

Файл x.bat    
<начало x > … вызов Файл y.bat
COMMAND/C y   <начало y >
   
<продолжение x > возврат EXIT
   

В MS-DOS начиная с версии 3.3 появилась команда call, предоставляющая возможность вызывать один командный файл из другого с последующим возвратом, например: call y.bat.

2.1.2 Задание для выполнения лаб. работы №3

1. Создать командный файл tf1.bat, который может иметь любое (неизвестное заранее) количество входных параметров, представляющих собой имена файлов. Он должен работать следующим образом:

§ На экран выводится последовательно содержание нескольких текстовых файлов, имена которых указывались в командной строке.

§ Текст каждого файла выводится на экран после нажатия клавиши, на чистом экране, сверху выдается заголовок, содержащий имя отображаемого файла.

§ Если искомый файл не существует, выводится соответствующее сообщение (на русском языке) с указанием имени файла.

§ По окончании работы выдается сообщение вида «Файлов больше нет. Работа окончена».

§ При запуске программы без параметров выводится сообщение об их отсутствии (отличное от того случая, когда они закончились).

2. ¨ Создать файл cf1.bat, который может иметь любое количество входных параметров, представляющих собой имена файлов. При запуске его без параметров должна выводиться подсказка – формат команды. Работа файла cf1.bat заключается в следующем:

§ Для каждого из заданных файлов выполняется проверка на его существование в текущем каталоге, и результат ее выводится на экран.

§ Действия выполняются до тех пор, пока не будут проверены все файлы, перечисленные в командной строке.

§ В процессе работы должны быть созданы два файла: list_ex.txt и list_n.txt – в первый заносятся имена существующих файлов, во второй – несуществующих.

§ По окончании работы оба новых файла выводятся на экран, сопровожденные заголовками.

¨ Запустить файл cf1.bat для проверки с разным количеством параметров.

¨ *Сделать в файле cf1.bat необходимые изменения, чтобы можно было в качестве первого параметра указывать путь к каталогу, в котором будет выполняться поиск перечисленных файлов.

3. ¨ Создать командный файл cf2.bat, параметром которого является имя файла. Работа cf2.bat состоит в проверке наличия указанного файла в текущем каталоге. Далее выполняется разветвление:

§ Если файла нет, вызвать mf.bat, в котором создается пустой файл с указанным именем (имя передавать как параметр) и затем выводится на экран содержимое каталога.

§ Если файл есть, рекурсивно вызвать cf2.bat, который будет распечатывать этот файл на экране, сопровождая заголовком «Печатается файл такой-то» (с указанием его имени).

¨ При запуске каждого командного файла выводить сообщение, какой именно файл работает. При рекурсивном вызове cf2.bat сначала должно появиться сообщение вида «файл cf2.bat запущен повторно», по окончании его работы – «повторный вызов завершен». После возврата в исходный файл вместо стандартного сообщения команды PAUSE сделать свое, например «Работа окончена».

2.1.3 Контрольные вопросы

1. Сколько может быть формальных параметров у командного файла? Фактических? Совпадает это количество или нет и почему?

2. Как можно выполнить рекурсивный вызов командного файла?

3. Для чего нужна команда SHIFT?

4. Какие команды и почему используются только в командных файлах, но никогда не применяются при вводе команды в командной строке?

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...