
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 и т.д.
Обратите внимание, что
-
по умолчанию здесь используется режим echo on. В противном случае сообщения команды pause были бы не видны;
-
расширения текстовых файлов присоединяются к имени непосредственно в командах выполняемого файла.