Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_users_snazarov_PZ_4.doc
Скачиваний:
3
Добавлен:
09.11.2018
Размер:
74.75 Кб
Скачать

For %d in (*.Txt) do type %d

Измените набор, вместо шаблона файлов задайте имена файлов перечислением.

Задание10: Создайте командный файл TEST7.BAT со следующим содержимым:

echo off

for %%S in (%1) do copy %%S prn

Произведите запуск этого файла командой

> TEST7.BAT *.txt

Поясните смысл включения в команду запуска строки *.txt, назначение всех знаков % в команде for.

Команда shift (сдвиг) позволяет сдвигать строку параметров влево на один параметр. Обычно в командный файл можно передавать до 9 параметров, применение данной команды позволяет снять это ограничение. Смысл использования данной команды лучше всего показать на простом примере. Создадим командный файл TEST8.BAT, который отображает видимые DOS параметры (от %0 до %9) строки запуска файла. Сдвиг каждый раз строки параметров позволяет выводить 10 элементов строки, сдвинутой на одну позицию влево.

echo off

:start

if /%0== / goto end

echo %0 %1 %2 %3 %4 %5 %6 %7 %8 %9

shift

goto start

:end

Вызов этого файла будем проводить командой

>test8.bat a s d f g h j k l z x c v b n m

Однобуквенные параметры командной строки можно интерпретировать как имена каких-то файлов, в данном случае несуществующих. Но следует учитывать, что имена файлов, используемые в качестве параметров командной строки не должны содержать расширений.

Результаты выполнения командного файла TEST8.BAT показаны на следующей копии экрана. Здесь показана строка вызова командного файла с 16 параметрами. Каждый раз при выполнении команды echo выводятся первые 10 элементов строки, после чего вся строка сдвигается на одну позицию влево. Этот процесс заканчивается исчезновением параметров в строке и завершением работы файла.

Для уяснения динамики этого процесса можно между командами

shift

goto start

включить команду pause и увидеть этот процесс по шагам.

Рассмотрим еще один комплексный пример. Пусть требуется создать командный файл TEST9.BAT, который будет копировать из текущего каталога на дискету целый ряд текстовых файлов с проверкой правильности записи и удалением исходных файлов. Перед каждым удалением файла должно выдаваться предупреждающее сообщение. В момент приостановки можно прервать дальнейшее выполнение командного файла, нажав клавиши <Ctrl>+C.

:loop

copy %1.txt A:/v

pause Удаляю скопированный файл

del %1.txt

shift

if not %1.==.goto loop

Запуск этого файла следует выполнять командой

>TEST9.BAT 01 02 03 04 05 06 07 08 09 10 11 12 и т.д., если текстовые файлы имеют имена 01.txt, 02.txt, 03.txt и т.д.

Обратите внимание, что

  1. по умолчанию здесь используется режим echo on. В противном случае сообщения команды pause были бы не видны;

  2. расширения текстовых файлов присоединяются к имени непосредственно в командах выполняемого файла.

7