КАТЕГОРИИ: Архитектура-(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 команда [параметры_команды]
Предположим, требуется с помощью команды 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 В этом примере все файлы с диска A копируются в текущий каталог. После этого на экран выводится сообщение о необходимости заменить диск, затем команда pause приостанавливает работу программы, чтобы пользователь мог заменить диск и нажать любую клавишу для продолжения процесса. Данная пакетная программа работает как бесконечный цикл. Оператор goto BEGIN возвращает управление на начало командного файла. Для завершения работы этой пакетной программы требуется нажать CTRL+C, а затем Y. Примечания Если при работе пакетной программы была нажата комбинация CTRL+C для ее остановки, на экран будет выведено следующее сообщение: Завершить выполнение пакетного файла [Y(да)/N(нет)]? Добавление комментариев в пакетные программы или файлы конфигураций. rem [ текст ]
Следующий пример показывает использование в пакетном файле комментариев и вертикальных пробелов: @echo off Предположим, необходимо ввести в файл Config.nt комментарий, расшифровывающий формат строки приглашения, определяемой командой prompt. Для этого следует добавить в файл следующие строки:
rem Установка приглашения для вывода текущего каталога Примечания Команда rem не выводит комментарии на экран. Для вывода комментариев на экран необходимо использовать команду echo on в пакетных файлах или в файле Config.nt. В тексте комментариев не могут быть использованы символы перенаправления (< и >) или канала (|). Хотя команда rem без текста комментария может быть использована для задания вертикальных пробелов в пакетном файле, также можно использовать и просто пустые строчки. Командный интерпретатор Windows 2000 пропускает пустые строки при обработке пакетных файлов. Начало области локальных установок переменных среды. Локальное окружение используется до тех пор, пока не встретится команда endlocal или не будет достигнут конец пакетного файла. setlocal режим
Локальное изменение переменных среды в пакетном файле может быть использовано следующим образом: 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) — в противном случае. Этим можно воспользоваться в пакетных программах для проверки доступности расширений командного процессора, как в приведенном ниже примере:
Поскольку cmd не устанавливает значение errorlevel, если расширения командного процессора запрещены или используются более старые версии Cmd.exe, команда verify с недопустимым аргументом устанавливает errorlevel в ненулевое значение. Если команда setlocal, разрешающая расширения, не устанавливает значение errorlevel в единицу, то расширения командного процессора недоступны Используйте команду setlocal для изменения переменных среды во время исполнения пакетного файла. Изменения среды, выполненные после setlocal, являются локальными для пакетного файла. Предыдущие установки восстанавливаются или после выполнения команды endlocal, или после достижения конца пакетного файла. Допускается использование нескольких (вложенных).команд setlocal и endlocal в пакетной программе
Дата добавления: 2017-02-01; Просмотров: 100; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |