Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Назаров, Глава 1.docx
Скачиваний:
3
Добавлен:
07.05.2019
Размер:
473.47 Кб
Скачать

If условие команда.

В качестве условия обычно используются:

  1. Проверка наличия файла. В этом случае в качестве условия записывается фраза exist диск:путь\имя_файла.расш

  2. Проверка кода завершения отдельных программ по значению внутренней переменной системы с именем Errorlevel. В этом случае в качестве условия записывается фраза “errorlevel значение”. Условие считается истинным, если код завершения равен или больше параметра значение. Командами OS, устанавливающими коды завершения, являются backup, diskcomp, diskcopy, format, graftabl, keyb, replace, restore, setver, xcopy. Значение переменной errorlevel может формироваться и многими вспомогательными (утилитами) и прикладными программами.

  3. Проверка идентичности двух символьных строк. Строка условие при этом записывается в виде

строка_1==строка_2 (двойной знак =)

Предваряя любому из перечисленных условий слово not, можно проверять противоположное условие.

Составим командный файл test4.bat, проверяющий наличие в корневом каталоге диска файла автозагрузки (autoexec.bat) и отображающий его содержание. Обратите внимание на использование команды goto совместно с if.

echo off

cls

cd\

rem переход в корневой каталог текущего диска, в котором размещаются файлы

rem autoexec.bat и config.sys

if exist autoexec.bat goto m1

echo файла AUTOEXEC.BAT на этом диске нет!

goto end

:m1

type autoexec.bat

:end

Другой модификацией этого файла, использующей параметр not, может быть файл test5.bat, текст которого приведен ниже:

echo off

cls

cd\

if not exist autoexec.bat goto error

type autoexec.bat

goto end

:error

echo

: end

Видоизменим файл test5.bat таким образом, чтобы можно было отыскивать и просматривать нужный файл в любом каталоге. Учитывая, что файлы могут иметь большие размеры, превышающие емкость одного экрана, обеспечим поэкранный просмотр файлов. Имя нужного файла будем задавать в качестве параметра в строке вызова файла test6.bat. Например, так

test6.bat proba.txt

Здесь имя искомого файла proba.txt служит фактическим параметром, значение которого должно заменить формальные параметры %1 внутри командного файла. Напомним, что таких параметров строка вызова может иметь от %1 до %9. наш командный файл test6.bat будет иметь следующее содержание:

echo off

cls

if /%1==/ goto error1

if not exist autoexec.bat goto error2

type %1|more

goto end

:error1

echo Вы забыли указать имя искомого файла!

:goto end

:error2

echo файла %1 на этом диске нет!

:end

В этом фрагменте два слеша / в операторе if играют роль скобок.

Для многократного выполнения отдельных команд применяется команда for. Она позволяет обрабатывать целые группы файлов. Команда имеет следующие форматы:

for %%переменная in (набор) do команда - для строк командных файлов;

for %переменная in (набор) do команда – для режима командной строки (автономного выполнения команды).

В качестве параметров команды используются:

  • переменная – однобуквенная переменная, последовательно принимающая значения слов или имен файлов, перечисленных в параметре (набор);

  • (набор) – одно или несколько символьных слов или спецификаций файлов. Спецификация файла имеет вид диск:путь\имя_файла.расш. Допускаются шаблоны групповых операций. Слова и спецификации файлов разделяются пробелами или запятыми. Максимальная длина строки набора – не более 127 символов;

  • команда – команда DOS, выполняемая для каждого слова или файла из параметра набор.

Обычно в командный файл можно передавать до 9 параметров, иногда этого недостаточно. Команда shift (сдвиг) позволяет сдвигать строку параметров влево на один параметр. Применение данной команды позволяет снять ограничение на число параметров. Смысл использования данной команды лучше всего показать на простом примере. Создадим командный файл test8.bat, который отображает видимые системой параметры (от %0 до %9) строки запуска файла. Сдвиг каждый раз строки параметров позволяет увеличить число параметров. Текст файла test8.bat:

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. расширения текстовых файлов присоединяются к имени непосредственно в командах выполняемого файла.

Задание для самостоятельной работы

1. В созданном каталоге сформируйте 3 - 4 текстовых файла, различающихся размерами и содержанием. В режиме командной строки затем выполните команду

for %d in (*.txt) do type %d

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

3. Создайте командный файл test7.bat со следующим содержанием:

echo off

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

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

4. Подсчитать количество выполняемых циклов в предыдущем примере. Для этого ввести переменную окружения и перед циклическим участком программы задать её значение (например, set /a d=0). В тело цикла включить подсчет числа повторений цикла (например, set /a d=d+1). После выхода из цикла прочитать значение числа повторов командой set /a d или командой echo %d%.