Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Особенности командных файлов в Windows NT-XPСодержание книги
Поиск на нашем сайте
Фактически в составе Windows NT имеются два командных интерпретатора – command.com во встроенной виртуальной машине MS‑Dos (аналогичный по возможностям рассмотренному ранее) и специальный интерпретатор команд Windows NT – cmd.exe. Для запуска командного интерпретатора можно вызвать ярлык «Пуск/Программы/Командная строка», файловый менеджер типа FAR или загрузить cmd.exe непосредственно. При запуске cmd.exe можно использовать, как и в command.com ключи /C, /K, а также задание цвета и кодировки. Ключи /X и /Y соответственно включают и выключают расширенный режим работы интерпретатора (по умолчанию установлен). Работа с переменными среды текущего командного окна осуществляется, как и в Windows 9x, с помощью команды set. Естественно, изменения, которые вносятся в переменные среды этой команды, актуальны только в текущем командном окне. Новые, весьма полезные, возможности у команды set появляются при включении расширенной обработки команд. Теперь переменные могут рассматриваться как числа и с ними можно производить арифметические вычисления. Для этой цели имеется дополнительный ключ /а: SET /А переменная = выражение Использование ключа /а указывает, что стоящая справа от знака равенства строка является числовым выражением, значение которого вычисляется. Например, если задать команду SET /А М=1+2 то значение переменной M будет равно трем. Обработчик выражений, входящих в команду set, очень прост и поддерживает следующие операции, перечисленные в порядке убывания приоритета: · группировка с помощью круглых скобок (); · арифметические операторы умножения (*), целочисленного деления (/), остатка от деления (%); · арифметические операторы сложения (+) и вычитания (-); · двоичный сдвиг влево (<<) и вправо (>>); · двоичное И (&); · двоичное исключающее ИЛИ (л); · двоичное ИЛИ (|); · операторы присваивания =*, =/, =%, =+, =-, =, &=, ^=, |=, <<= и >>=; · разделение операторов с помощью запятой (,). При использовании любых логических или двоичных операторов необходимо заключить строку выражения в кавычки. Можно использовать префиксы для систем счисления – 0x -16, 0b - 2, 0 - 8. Любые нечисловые строки в выражении рассматриваются как имена переменных среды, значения которых преобразуются в числовой вид перед использованием. Если переменная с указанным именем не определена, вместо нее подставляется нулевое значение. Например, если переменная X не была предварительно задана, то в результате выполнения команды SET /A N=X+5 значение n будет равно пяти. Таким образом, применение ключа /а позволяет выполнять арифметические операции со значениями переменных среды, причем не нужно вводить знаки % для получения их значений. Кроме того, усовершенствована работа с переменными среды как со строками (кроме конкатенации – замена вхождений и выделение подстрок). Командные файлы в Windows NT, как и в Windows 9x, являются обычными текстовыми файлами, однако для них в операционной системе зарезервированы не одно, а два расширения: bat и cmd. Новые возможности командных файлов связаны с командами setlocal, endlocal, pushd, popd, a также изменениями в goto, call, if, for. В Windows NT имеется возможность локализовать изменения переменных среды внутри пакетного файла, т. е. автоматически восстанавливать значения всех переменных в том виде, в каком они были до начала запуска данного файла. Команда SETLOCAL определяет начало области локальных установок переменных среды, т.е. изменения среды, внесенные после выполнения setlocal, будут являться локальными относительно текущего пакетного файла. Каждая команда setlocal должна иметь соответствующую команду ENDLOCAL для восстановления прежних значений переменных среды. При работе с параметрами командного файла можно обозначить все аргументы через %*, а также использовать синтаксический анализ:
Можно задавать в качестве метки перехода строку:EOF, которая передает управление в конец текущего пакетного файла. Это позволяет легко выйти из пакетного файла без определения каких-либо меток в самом его конце (GOTO:EOF). В качестве адресата команды CALL можно использовать метки внутри текущего командного файла (аналог подпрограмм). При вызове такой команды создается новый контекст текущего пакетного файла с заданными аргументами и управление передается на инструкцию, расположенную сразу после метки. Для выхода из такого пакетного файла необходимо два раза достичь его конца (первый выход возвращает управление на инструкцию, расположенную сразу после call, а второй выход завершает выполнение пакетного файла). Дополнительно вводятся еще три варианта команды IF: 1) IF [/I] строка1 оператор_сравнения строка2 команда В качестве операторов_сравнения используются: EQL – равно, NEQ – не равно, LSS – меньше, GTR – больше, LEQ – меньше или равно, GEQ – больше или равно. Ключ /I задает сравнение без учета регистра. 2) IF CMDEXTVERSION число команда Служит для определения внутреннего номера версии расширенной обработки команд (какая на 2000 и XP -?) 3) IF DEFINED переменная команда Возвращает истинное значение, если переменная среды определена. В Windows NT доступны еще пять разновидностей циклов FOR, которые обеспечивают следующие функции: 1) FOR /D %переменная IN (набор) DO команда [параметры] Выполнение заданной команды для всех подходящих имен каталогов, например получение списка всех каталогов на диске C: FOR /D %%f IN (C:\) DO ECHO %%f 2) FOR /R [[диск:]путь] %переменная IN (набор) DO команда [параметры] Организует рекурсивное выполнение заданной команды для определенного каталога, а также всех его подкаталогов. Например, для распечатки всех файлов с расширением *.txt: FOR /R %%f IN (*.txt) DO PRINT %%f 3) FOR /L %переменная IN (начало, шаг, конец) DO команда [параметры] Классический цикл с параметром (заданными началом, концом и шагом приращения). Например: FOR /L %%f IN (1,1,5) DO ECHO %%f 4) FOR /F [“ключи”] % переменная IN (набор) DO команда [параметры] Чтение и обработка строк из набора текстовых файлов. Ключи позволяют выделять слова и подстроки (токены) по разделителям (DELIMS) или начальным символам. 5) FOR /F [“ключи”] %переменная IN (‘строка’) DO команда [параметры] Позволяет обработать строку вывода определенной команды (вместо набора файлов в предыдущем варианте – строка вызовов команды в апострофах). Например, для вывода имен всех переменных среды: FOR /F “DELIMS==” %%i IN (‘SET’) DO ECHO %%i Кроме того, для переменных команды FOR разрешены также синтаксические операции (выделение имени, пути, диска - аналогично рассмотренным выше переменным окружения). Команда PUSHD сохраняет имя текущего каталога для команды POPD и осуществляет переход в другой каталог. Ее синтаксис имеет вид: PUSHD [путь |..] Вновь сделать текущим каталог, сохраненный командой pushd, можно с помощью команды popd. Примеры заданий 1. Пусть имеется текстовый файл protokol.txt, в котором хранится журнал обработанных файлов в следующем формате: <имя файла> <дата> <время> Слово дата здесь начинается в каждой строке с двадцатой позиции. Необходимо написать командный файл, с помощью которого сделать выборку из этого файла (т. е. создать новый текстовый файл с нужной информацией) за заданный месяц (мм) и год (гггг) в файл ммгггг-.txt, сформированный файл упорядочить по дате обработки. Нужные месяц и год указать как параметры командной строки. Решение: Практически все нужные действия выполняются с помощью конвейеризации команд find и sort: @ЕСНО OFF RЕМ Проверка наличия параметров командной строки IF -%1==- GOTO NoParam IF -%2==- GOTO NoParam REM Выделение нужных строк из файла protokol.txt FIND "%1.%2" protokol.txt | SORT /+26 > %l%2.txt GOTO End :NoParam ECHO He заданы необходимые параметры командной строки! PAUSE :End
2. Написать командный файл, который будет копировать из текущего каталога все файлы с расширением txt, кроме одного файла, указанного в качестве второго параметра командной строки, в каталог, указанный первым параметром. Если имя каталога, в который должно производиться копирование, не задано, то вывести сообщение об этом и прервать выполнение файла. Решение Для выполнения поставленной задачи можно перебрать в цикле все файлы с расширением txt, проверяя перед копированием имя каждого из этих файлов: @ЕСНО OFF REM Проверка наличия параметра командной строки IF -%!==- GOTO NoDir RЕМ Копирование нужных файлов FOR %%f IN (*.txt) DO IF NOT -%%f==-%2 COPY %%f %1 GOTO End :NoDir ECHO He указан каталог для копирования! PAUSE :End
3. Задание аналогично второму упражнению. Дополнительные требования: а) переписывать только те файлы, которые новее одноименных в каталоге - приемнике, б) не прерывать копирование в случае возникновения ошибки, в) записывать в файл logcopy.txt имя каждого копируемого файла и результат выполнения операции для него. Другими словами, файл logcopy.txt должен быть примерно таким: Успешно: а.txt Ошибка: b.txt Успешно: с.txt
Решение В этом упражнении нужно создать два пакетных файла. В основном файле работает такой же цикл for, как и в предыдущем упражнении, однако вместо непосредственного выполнения команды copy здесь вызывается командный файл 3_1. bat: @ЕСНО OFF REM Проверка наличия параметра командной строки IF -%1==- GOTO NoDir REM Вызов в цикле файла 3_l.bat для копирования нужного файла FOR %%f IN (*.txt) DO IF NOT -%%f=-%2 CALL 3_l.bat %%f %1 GOTO End :NoDir ECHO He указан каталог для копирования! PAUSE :End Вызываемый в цикле файл 3_1.bat имеет следующее содержимое: @ЕСНО OFF REM Копирование файла XCOPY %1 %2 /D /С > NUL REM Проверка успешности копирования IF ERRORLEVEL 0 GOTO Success REM Запись в файл отчета информации об ошибке при копировании ECHO Ошибка: % 1 >> logcopy.log GOTO End :Success REM Запись в файл отчета информации об успешном копировании ECHO Успешно: %1 >> logcopy.log :End 4. Создать командный файл, который выводил бы содержимое каталога, указанного в качестве параметра командной строки, причем пользователю должна быть предоставлена возможность выбора с помощью меню устройства для вывода: на экран (информация выводится по одному Решение Следующий простой пакетный файл не требует дополнительных пояснений: @ЕСНО OFF CLS IF -%1==- GOTO NoDir RЕМ Вывод меню на экран ECHO A - На экран ECHO Б - В файл C:\catalog.txt ECHO В - На принтер КЕМ Вывод подсказки для ввода CHOICE /С:AБВ Куда выводить содержимое %1 CLS КЕМ Определение сделанного выбора IF ERRORLEVEL 3 GOTO DirToPrn IF ERRORLEVEL 2 GOTO DirToFile IF ERRORLEVEL 1 GOTO DirToCon ECHO Выбор не был сделан. GOTO End :DirToCon DIR %1 | MORE GOTO End :DirToFile DIR %1 > C:\catalog.txt GOTO End :DirToPrn DIR %1 > prn GOTO End :NoDir ECHO He указан каталог для сканирования! PAUSE :End Задания В соответствии с номером студента по списку в журнале, разработать пакетный bat-файл (см. Приложение 3). В пакетных файлах предусмотреть сообщение имени, назначения, применения и автора пакетного файла (при пустой командной строке и по ключу /?), контроль верности командной строки, наличие требуемых файлов и сохранность имени пакетного файла. Текущий каталог не изменять, если это специально не оговорено. Там, где необходимо, имена файлов указывать с полным путем и диском. С клавиатуры при работе пакетного файла вводить только числа, строковые данные выбирать либо из меню, либо передавать в командной строке.
Лабораторные работы № 3-5 Цель работы: изучить сервер сценариев Windows Script Host, объекты WSH и основные операции работы с файловой системой из сценариев WSH.
|
||||||||||||||||||||||
Последнее изменение этой страницы: 2016-12-17; просмотров: 371; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.67.237 (0.007 с.) |