Реферат: по Администрированию программного обеспечения На тему: «Циклы командной строки»
Название: по Администрированию программного обеспечения На тему: «Циклы командной строки» Раздел: Остальные рефераты Тип: реферат | ||||||||||||||||||||||||||||||||||||||||||||||||
Министерство образования Российской Федерации Белгородский государственный университет имени В. Г. Шухова Реферат по Администрированию программного обеспечения На тему: «Циклы командной строки» Выполнил: студент группы ПВ-42 Смоленский В. В. Проверил: Федотов Е. А. Белгород 2009 Иногда требуется выполнить множество раз одну команду командной строки с разными параметрами. Писать целиком команду каждый раз затратно по времени, писать сценарии тоже довольно долго. Хотелось бы написать команду один раз и задать лишь разные параметры. Такое решение существует – это циклы командной строки, позволяющие выполнять команду несколько раз с параметрами, заданными в исходном множестве. Рассмотрим, что это такое. Синтаксис for {% переменная |%% переменная } in ( множество ) do команда [ПараметрыКоманднойСтроки ] Параметры {% переменная |%% переменная } Обязательный параметр. Замещаемый параметр. Используйте % переменная для выполнения команды for из командной строки. Используйте %% переменная для выполнения команды for в пакетном файле. Переменные учитывают регистр и могут быть представлены со значением альфа, например, %A, %B или %C. ( множество ) Обязательный параметр. Задает один или несколько файлов, каталогов, диапазон значений или текстовых строк, подлежащих обработке заданной командой. Скобки являются обязательными. команда Обязательный параметр. Задает команду, которая будет выполнена для каждого файла, каталога диапазона значений или текстовой строки, включенной в указанный параметр ( множество ) . ПараметрыКоманднойСтроки Задает параметры командной строки, которые используются с указанной командой. /? Отображение справки в командной строке. Заметки
Команда for может быть использована в пакетном файле или непосредственно из командной строки.
Перечисленные ниже атрибуты применяются к команде for .
Параметр множество может представлять группу файлов или несколько групп файлов. Для задания групп файлов можно использовать подстановочные знаки (* и ?). Следующие множества файлов являются допустимыми: (*.doc) (*.doc *.txt *.me) (jan*.doc jan*.rpt feb*.doc feb*.rpt) (ar??1991.* ap??1991.*) Когда используется команда for , первое значение в параметре множество заменяет параметр %% переменная (или % переменная ), а затем для обработки этого значения выполняется указанная команда. Это продолжается до тех пор, пока не будут обработаны все файлы (или группы файлов), которые соответствуют значению параметра множество .
In и do не являются параметрами, но они требуются для работы команды for . Если какое-то из слов пропущено, на экран будет выведено сообщение об ошибке.
Если расширения командного процессора разрешены (по умолчанию), то поддерживаются следующие дополнительные формы команды for .
Если параметр множество содержит подстановочные знаки (* и ?), команда, указанная в параметре команда , выполняется для каждого каталога (кроме множества файлов в указанном каталоге), совпадающего с параметром множество . Используется следующий синтаксис. for /D {%% | % }переменная in ( множество ) do команда [ПараметрыКоманднойСтроки ]
Проходит по дереву каталогов с корнем в [диск : ]путь , выполняя инструкцию for для каждого каталога в дереве. Если после ключа /R не задан каталог, предполагается текущий каталог. Если параметр множество задано одной точкой (.), то команда просто перечислит каталоги в дереве. Используется следующий синтаксис. for /R [[диск : ]путь ] {%% | % }переменная in ( множество ) do команда [ПараметрыКоманднойСтроки ]
Используйте переменную итерации для установки начального значения (НачальноеЗначение# ), а затем перемещайтесь по диапазону значений, пока значение не превысит конечное значение множества (КонечноеЗначение# ). /L выполнит итерацию, сравнив параметр НачальноеЗначение# с параметром КонечноеЗначение# . Если параметрНачальноеЗначение# меньше параметра КонечноеЗначение# , то выполняется команда. Когда переменная итерации превысит параметр КонечноеЗначение# , командная оболочка покидает цикл. Также можно использовать отрицательный параметр шаг# для перемещения в диапазоне убывающих значений. Например, (1,1,5) создает последовательность «1 2 3 4 5», а (5,-1,1) создает последовательность «5 4 3 2 1». Используется следующий синтаксис. for /L {%% | % }переменная in ( НачальноеЗначение#,шаг#,КонечноеЗначение# ) do команда [ПараметрыКоманднойСтроки ]
Разбор файлов следует использовать для обработки вывода команды, строк и содержимого файла. Используйте переменные итерации для определения содержимого или строк, которые требуется проверить. Параметр КлючевыеСловаРазбора используется для изменения разбора. Используйте параметр КлючевыеСловаРазбора маркер для указания маркеров, которые воспринимаются как переменные итерации. Примечание. Без параметра маркера ключ /F проверяет только первый маркер. Разбор файлов состоит в чтении вывода, строки или содержимого файла, разбиении его на отдельные строки текста и разборе каждой строки на ноль или маркеры. Цикл программы for затем называется с переменной итерации, установленной в маркер. По умолчанию /F передает первый отделенный пробелом элемент из каждой строки каждого файла. Пустые строки пропускаются. Используется также другой синтаксис. for /F [" КлючевыеСловаРазбора " ] {%% | % }переменная in ( МножествоИменФайлов ) do команда [ПараметрыКоманднойСтроки ] for /F [" КлючевыеСловаРазбора " ] {%% | % }переменная in (" СимвольнаяСтрока ") do команда [ПараметрыКоманднойСтроки ] for /F [" КлючевыеСловаРазбора " ] {%% | % }переменная in (' команда ') do команда [ПараметрыКоманднойСтроки ] Аргумент МножествоИменФайлов задает одно или несколько имен файлов. Каждый файл открывается, считывается и обрабатывается до перехода к следующему файлу в аргументе МножествоИменФайлов . Чтобы переопределить стандартное поведение разбора, укажите параметр " КлючевыеСловаРазбора " . Это строка, заключенная в кавычки, которая содержит одно или несколько ключевых слов для указания различных режимов разбора. Если используется параметр usebackq, используйте один из приведенных ниже синтаксисов: for /F ["usebackq КлючевыеСловаРазбора " ] {%% | % }переменная in ( "МножествоИменФайлов ") do команда [ПараметрыКоманднойСтроки ] for /F ["usebackq КлючевыеСловаРазбора " ] {%% | % }переменная in (' СимвольнаяСтрока ') do команда [ПараметрыКоманднойСтроки ] for /F ["usebackq КлючевыеСловаРазбора " ] {%% | % }переменная in (` команда `) do команда [ПараметрыКоманднойСтроки ] В приведенной ниже таблице перечислены ключевые слова разбора, которые используются для параметра КлючевыеСловаРазбора .
Были расширены модификаторы подстановок для ссылок на переменные в for . Приведенная ниже таблица перечисляет варианты синтаксических конструкций (на примере переменной I ).
Приведенная ниже таблица перечисляет комбинации модификаторов, которые можно использовать для получения более сложных результатов.
В приведенных выше примерах %I и PATH могут быть заменены другими допустимыми значениями. Допустимое имя переменной for прекращает %~ syntax. Использование прописных букв в именах переменных, например %I , может улучшить восприятие программы и позволит избежать недоразумений с модификаторами, в которых строчные и прописные буквы не различаются.
Конструкция for /F может быть использована непосредственно для строки. Для этого поместите параметр МножествоИменФайлов между скобками в одиночные кавычки (' МножествоИменФайлов ' ). Параметр МножествоИменФайлов будет воспринят как одиночная строка ввода из файла и будет разобран.
Команду for /F можно использовать для разбора вывода команды. Для этого поместите параметр МножествоИменФайлов между скобками в обратные кавычки. Он будет воспринят как командная строка, которая передается дочернему интерпретатору командной строки Cmd.exe, а результаты работы команды помещаются в памяти и разбираются, как если бы они являлись файлом. Примеры В пакетных файлах используется следующий синтаксис для команды for : for %% переменная in ( множество ) do команда [ПараметрыКоманднойСтроки ] Чтобы отобразить содержимое всех файлов, имеющих разрешение .doc или .txt, в текущем каталоге с помощью заменяемой переменной %f , введите следующую команду: for %f in (*.doc *.txt) do type %f В предыдущем примере каждый файл с расширением .doc или .txt в текущем каталоге будет подставляться вместо переменной %f , пока не будет выведено содержимое всех файлов. Чтобы использовать данную команду в пакетном файле, следует заменить все вхождения %f на %%f . В противном случае переменная игнорируется, и отображается сообщение об ошибке. Чтобы произвести разбор файла, игнорируя комментарии, можно использовать следующую команду: for /F "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k Данная команда производит разбор каждой строки в файле Myfile.txt, игнорируя строки, начинающиеся с точки с запятой, и передает второй и третий элементы из каждой строки в тело цикла команды FOR . Элементы разделяются запятыми и/или пробелами. Тело инструкции FOR использует %i для получения второго элемента, %j для получения третьего элемента и %k для получения оставшихся элементов в строке. Если имена файлов содержат пробелы, их следует заключать в кавычки (например, " ИмяФайла " ). Для использования кавычек необходима команда usebackq . В противном случае кавычки рассматриваются как определение символьной строки для разбора. Переменная %i объявлена явно в инструкции FOR , а %j и %k объявлены неявно с помощью tokens= . С помощью tokens= можно указать до 26 элементов, если это не вызовет попытки объявить переменную с именем, большим буквы "z" или "Z". Для разбора вывода команды с помощью помещения параметра МножествоИменФайлов в скобки можно использовать следующую команду: for /F "usebackq delims==" %i IN (`set`) DO @echo %i В данном примере перечисляются имена переменных среды в текущем окружении. А теперь рассмотрим пример, когда надо будет добавить 1000 пользователей. Вариантов несколько. Добавлять вручную долго, добавлять по 1му из командной строки тоже. Скрипт писать еще накладней, да и конфигурационный файл нужно тоже будет заполнить подробной информацией. Быстрее всего будет использовать цикл, параметрами которого будут имена 1000 пользователей. Получим команду такого вида: for %n in (John,Bruce,Mary,Charly,…,James) do dsadd user %n …[ список прочих параметров ] Данная запись означает что мы будем брать из списка параметров имена пользователей и создавать пользователя с таким именем командой dsadd. Здесь единственной затратой является написание 1000 имен, однако, это намного меньше, чем писать всю команду целиком 1000 раз или добавлять пользователей вручную из визуальной оболочки. |