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

Примеры

Вывод файлов в каталоге

Предположим, требуется с помощью команды 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

Приостановка выполнения пакетной программы с выводом сообщения

Для продолжения нажмите любую клавишу . . .

и ожиданием нажатия пользователем любой клавиши.