Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Проверка расширений командного процессора в пакетных файлах




Примеры

Setlocal

Примеры

Rem

Примеры

Pause

Разбор вывода

Разбор строки

Разбор файла

Перенаправление вывода

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

Примеры

For

Запуск некоторой команды для каждого файла из заданного множества.

Команда for может быть использована в пакетной программе или непосредственно из командной строки.

В пакетных файлах используется следующая форма команды for:

for %% переменная in ( множество ) do команда [ параметры_команды ]

Для использования for из командной строки используется следующая форма команды:

for %переменная in (множество) do команда [параметры_команды]

Параметр Описание
%%переменная или %переменная Замещаемый параметр. В команде for переменная %% переменная (или % переменная) будет заменяться текстовой строкой из заданного множества, пока команда (с указанными параметрами_команды) не обработает все файлы этого множества. Используйте %% переменная для выполнения команды for в пакетной программе. Используйте % переменная для выполнения команды for из командной строки. Имена переменных вводятся с учетом регистра.
(множество) Задает один или более файлов или текстовых строк, подлежащих обработке заданной командой. Скобки являются обязательными.
команда Задает команду, которая будет выполнена для каждого файла из множества.
параметры_команды Задает параметры и ключи для вызываемой команды (если команда использует параметры или ключи). Дополнительные формы команды for

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

перечисляются имена переменных среды в текущем окружении.

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

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

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

Предположим, в пакетной программе требуется сообщить пользователю о необходимости заменить диск в одном из дисководов. Для этого следует создать следующий файл:

@echo off
:begin
copy a:*.*
echo Пожалуйста, вставьте новый диск в дисковод A
pause
goto begin

В этом примере все файлы с диска A копируются в текущий каталог. После этого на экран выводится сообщение о необходимости заменить диск, затем команда pause приостанавливает работу программы, чтобы пользователь мог заменить диск и нажать любую клавишу для продолжения процесса. Данная пакетная программа работает как бесконечный цикл. Оператор goto BEGIN возвращает управление на начало командного файла. Для завершения работы этой пакетной программы требуется нажать CTRL+C, а затем Y.

Примечания

Если при работе пакетной программы была нажата комбинация CTRL+C для ее остановки, на экран будет выведено следующее сообщение:

Завершить выполнение пакетного файла [Y(да)/N(нет)]?

Добавление комментариев в пакетные программы или файлы конфигураций.

rem [ текст ]

Параметр Описание
текст Задает строку, используемую как комментарий.

Следующий пример показывает использование в пакетном файле комментариев и вертикальных пробелов:

@echo off
rem Эта пакетная программа форматирует и проверяет новые диски.
rem Она называется CHECKNEW.BAT.
rem
echo Вставьте новый диск в дисковод B.
pause
format b: /v
chkdsk b:

Предположим, необходимо ввести в файл Config.nt комментарий, расшифровывающий формат строки приглашения, определяемой командой prompt. Для этого следует добавить в файл следующие строки:

rem Установка приглашения для вывода текущего каталога
prompt $p$g

Примечания

Команда rem не выводит комментарии на экран. Для вывода комментариев на экран необходимо использовать команду echo on в пакетных файлах или в файле Config.nt.

В тексте комментариев не могут быть использованы символы перенаправления (< и >) или канала (|).

Хотя команда rem без текста комментария может быть использована для задания вертикальных пробелов в пакетном файле, также можно использовать и просто пустые строчки. Командный интерпретатор Windows 2000 пропускает пустые строки при обработке пакетных файлов.

Начало области локальных установок переменных среды. Локальное окружение используется до тех пор, пока не встретится команда endlocal или не будет достигнут конец пакетного файла.

setlocal режим

Параметр Описание
режим Если расширения командного процессора разрешены (используются в Windows 2000 по умолчанию), пакетная команда setlocal допускает необязательный аргумент, который может принимать значения enableextensions или disableextensions. Он разрешает или запрещает расширения командного процессора до появления соответствующей команды endlocal, вне зависимости от состояния расширений командного процессора перед командой setlocal.Задает строку, используемую как комментарий При передаче аргумента команда setlocal также устанавливает значение errorlevel. Значение errorlevel равно нулю (0), если указан один из двух допустимых аргументов и единице (1) — в противном случае.

Локальное изменение переменных среды в пакетном файле может быть использовано следующим образом:

rem *******Начало комментария************** rem Эта программа запускает приложение superapp в сети, rem записывает вывод в файл и загружает этот файл в программу rem Блокнот. rem *******Конец комментария ************** @echo off setlocal path=g:\programs\superapp;%path% call superapp>c:\superapp.out endlocal start notepad c:\superapp.out

Команда setlocal устанавливает значение errorlevel равным нулю (0), если указан один из двух допустимых аргументов, и единице (1) — в противном случае. Этим можно воспользоваться в пакетных программах для проверки доступности расширений командного процессора, как в приведенном ниже примере:

verify other 2>nul setlocal enableextensions if errorlevel 1 echo Разрешение расширений командного процессора невозможно

Поскольку cmd не устанавливает значение errorlevel, если расширения командного процессора запрещены или используются более старые версии Cmd.exe, команда verify с недопустимым аргументом устанавливает errorlevel в ненулевое значение. Если команда setlocal, разрешающая расширения, не устанавливает значение errorlevel в единицу, то расширения командного процессора недоступны

Используйте команду setlocal для изменения переменных среды во время исполнения пакетного файла. Изменения среды, выполненные после setlocal, являются локальными для пакетного файла. Предыдущие установки восстанавливаются или после выполнения команды endlocal, или после достижения конца пакетного файла.

Допускается использование нескольких (вложенных).команд setlocal и endlocal в пакетной программе




Поделиться с друзьями:


Дата добавления: 2017-02-01; Просмотров: 100; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.017 сек.