- •Пакетные файлы
- •Общие правила оформления пакетных файлов
- •Символы условной обработки
- •% (Замещаемый параметр)
- •Содержание лабораторной работы
- •Приложение 1 Применение команд операционной системы
- •Копирование нескольких файлов
- •Команды, используемые в пакетных файлах
- •Примеры
- •Примечания
- •Примеры
- •If [/I] строка1 оп_сравнения строка2 команда [else выражение]
- •If cmdextversion число команда [else выражение]
- •If defined переменная команда [else выражение]
- •Примечания
- •Примеры
- •Примеры
- •Примеры
- •Примечания
- •Примеры
- •Примечания
- •Примеры
Примеры
Вывод файлов в каталоге
Предположим, требуется с помощью команды type вывести на экран содержимое всех файлов в текущем каталоге, имеющих расширения .doc или .txt. Для этого служит следующая команда, использующая замещаемую переменную %f:
for %f in (*.doc *.txt) do type %f
В этом примере каждый файл с расширением .doc или .txt в текущем каталоге будет подставляться вместо переменной %f, пока не будет выведено содержимое всех файлов. Для использования этой команды в пакетном файле необходимо использовать переменную %%f вместо %f. В противном случае система Windows 2000 проигнорирует переменную и выведет сообщение об ошибке.
Перенаправление вывода
Система Windows 2000 поддерживает ключи, каналы и перенаправления, которые могут быть использованы с некоторыми командами. Например, для перенаправления вывода предыдущего примера на принтер PRN (порт принтера по умолчанию) должна быть использована следующая команда:
for %f in (*.doc *.txt) do type %f > prn:
Разбор файла
Чтобы произвести разбор файла, игнорируя комментарии, можно использовать следующую команду:
for /F "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k
Она производит разбор каждой строки в файле myfile.txt, игнорируя строки, начинающиеся с точки с запятой, и передает второй и третий элементы из каждой строки в тело цикла. Элементы разделяются запятыми и/или пробелами. Обратите внимание, что тело инструкции FOR использует %i для получения второго элемента, %j для получения третьего элемента и %k для получения оставшихся элементов в строке. Имена файлов, содержащие пробелы, должны быть заключены в двойные кавычки. Чтобы таким образом использовать двойные кавычки, необходимо указать режим usebackq. В противном случае двойные кавычки будут интерпретироваться как указание на разбираемую символьную строку.
Переменная %i объявлена явно в инструкции FOR, а %j и %k объявлены неявно с помощью режима tokens=. С помощью строки tokens= можно указать до 26 элементов, если это не вызовет попытки объявить переменную с именем, большим буквы «z» или «Z».
Помните, что имена переменных for учитывают регистр буквы, они являются глобальными и одновременно может быть активно не больше 52 переменных.
Разбор строки
Конструкция for /F может быть использована непосредственно для строки. Для этого поместите набор_имен_файлов между скобками в одиночные кавычки. Он будет воспринят как одиночная строка ввода из файла и будет разобран.
Разбор вывода
Наконец, можно использовать команду for /F для разбора вывода команды. Для этого набор_имен_файлов между скобками заключается в обратные кавычки. Он будет воспринят как командная строка, которая передается дочернему интерпретатору командной строки Cmd.exe, а результаты работы команды помещаются в памяти и разбираются, как если бы они являлись файлом. Так, в следующем примере:
for /F "usebackq delims==" %i IN (`set`) DO @echo %i
перечисляются имена переменных среды в текущем окружении.
Pause
Приостановка выполнения пакетной программы с выводом сообщения
Для продолжения нажмите любую клавишу . . .
и ожиданием нажатия пользователем любой клавиши.
