Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Топ:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2017-11-18 | 404 |
5.00
из
|
Заказать работу |
|
|
Как и в рассмотренном выше примере с составными выражениями, при обработке переменных среды внутри цикла могут возникать труднообъяснимые ошибки, связанные с ранними связыванием переменных. Рассмотрим пример. Пусть имеется командный файл следующего содержания:
SET a=FOR %%i IN (Раз,Два,Три) DO SET a=%a%%%iECHO a=%a%В результате его выполнения на экран будет выведена строка "a=Три", то есть фактически команда
FOR %%i IN (Раз,Два,Три) DO SET a=%a%%%iравносильна команде
FOR %%i IN (Раз,Два,Три) DO SET a=%%iДля исправления ситуации нужно, как и в случае с составными выражениями, вместо знаков процента (%) использовать восклицательные знаки и предварительно включить режим связывания времени выполнения командой SETLOCAL ENABLEDELAYEDEXPANSION. Таким образом, наш пример следует переписать следующим образом:
SETLOCAL ENABLEDELAYEDEXPANSIONSET a=FOR %%i IN (One,Two,Three) DO SET a=!a!%%iECHO a=%a%В этом случае на экран будет выведена строка "a=OneTwoThree".
Команда Findstr и ее использование в цикле
Назначение команды - поиск строк в текстовых файлах.
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:файл]
[/C:строка] [/G:файл] [/D:список_папок] [/A:цвета] [/OFF[LINE]]
строки [[диск:][путь]имя_файла[...]]
/L Поиск строк дословно.
/R Поиск строк как регулярных выражений.
/S Поиск файлов в текущей папке и всех ее подпапках.
/I Определяет, что поиск будет вестись без учета регистра.
/X Печатает строки, которые совпадают точно.
/V Печатает строки, не содержащие совпадений с искомыми.
/N Печатает номер строки, в которой найдено совпадение, и ее содержимое.
/M Печатает только имя файла, в которой найдено совпадение.
/O Печатает найденный строки через пустую строку.
/P Пропускает строки, содержащие непечатаемые символы.
/F:файл Читает список файлов из заданного файла (/ для консоли).
|
/C:строка Использует заданную строку как искомую фразу поиска.
/D:список_папок Поиск в списке папок (разделяются точкой с запятой).
строка Искомый текст.
[диск:][путь]имя_файла - задает имя файла или файлов.
Использовать пробелы для разделения нескольких искомых строк, если аргумент не
имеет префикса /C. Например, 'FINDSTR "Привет мир" a.b' ищет "Привет" или
"мир" в файле a.b, а команда 'FINDSTR /C:"Привет мир" a.b' ищет строку
"Привет мир" в файле a.b.
Краткая сводка по синтаксису регулярных выражений:
. Любой символ.
* Повтор: ноль или более вхождений предыдущего символа или класса
^ Позиция в строке: начало строки
$ Позиция в строке: конец строки
[класс] Класс символов: любой единичный символ из множества
[^класс] Обратный класс символов: любой единичный символ из дополнения
[x-y] Диапазон: любые символы из указанного диапазона
\x Служебный символ: символьное обозначение служебного символа x
\<xyz Позиция в слове: в начале слова
xyz\> Позиция в слове: в конце слова
Пример командного файла для поиска в файле num.txt по образцу строк, в которых присутствует хотя бы одна двоичная цифра.
@echo off
set /a kol=0
for /f %%b in ('findstr /rc:"[0-1]" num.txt') do set /a kol=kol+1
echo %kol%
Билет 9. Powershell
Главная цель: создание среды составления сценариев, которая наилучшим образом подходила бы для современных версий ОС Windows и была бы более функциональной, расширяемой и простой в использовании, чем какой-либо аналогичный продукт для любой другой ОС.
· Обеспечение прямого доступа из командной строки к объектам COM, WMI и.NET.
· Организация работы с произвольными источниками данных в командной строке по принципу файловой системы.
· Разработка интуитивно понятной унифицированной структуры встроенных команд, основанной на их функциональном назначении. В новой оболочке имена всех внутренних команд (в PowerShell они называются командлетами) соответствуют шаблону "глагол-существительное", например, Get-Process (получить информацию о процессе), Stop-Service (остановить службу), Clear-Host (очистить экран консоли) и т.д.
|
· Обеспечение возможности расширения встроенного набора команд. Внутренние команды PowerShell могут дополняться командами, создаваемыми пользователем. При этом они полностью интегрируются в оболочку, информация о них может быть получена из стандартной справочной системы PowerShell.
· Организация поддержки знакомых команд из других оболочек. В PowerShell на уровне псевдонимов собственных внутренних команд поддерживаются наиболее часто используемые стандартные команды из оболочки Cmd.exe и Unix-оболочек.
· Разработка полноценной встроенной справочной системы для внутренних команд. Для большинства внутренних команд в справочной системе дано подробное описание и примеры использования.
· Реализация автоматического завершения при вводе с клавиатуры имен команд, их параметров, а также имен файлов и папок. Данная возможность значительно упрощает и ускоряет ввод команд с клавиатуры.
Главной особенностью среды PowerShell, отличающей ее от всех других оболочек командной строки, является то, что единицей обработки и передачи информации здесь является объект, а не строка текста.
Отличия. В Windows XP есть консольная утилита tasklist.exe, которая выдает информацию о процессах, запущенных в системе: C:\>tasklist
Предположим, что мы в командном файле интерпретатора Cmd.exe с помощью этой утилиты хотим определить, сколько оперативной памяти тратит процесс kavsvc.exe. Для этого нужно выделить из выходного потока команды tasklist соответствующую строку, извлечь из нее подстроку, содержащую нужное число и убрать пробелы между разрядами. В PowerShell задача решается с помощью команды get-process, которая возвращает коллекцию объектов, каждый из которых соответствует одному запущенному процессу. Для определения памяти, затрачиваемой процессом kavsvc.exe, нет необходимости в дополнительных манипуляциях с текстом, достаточно просто взять значение свойства WS объекта, соответствующего данному процессу.
Наконец, объектная модель.NET позволяет PowerShell напрямую использовать функциональность различных библиотек, являющихся частью платформы.NET. Например, чтобы узнать, каким днем недели было 9 ноября 1977 года, в PowerShell можно выполнить следующую команду: (get-date "09.11.1974").dayofweek.tostring()
|
В этом случае команда get-date возвращает.NET-объект DateTime, имеющий свойство DayOfWeek, при обращении к которому вычисляется день недели для соответствующей даты.
· PowerShell, в отличие от cmd, предоставляющего доступ только к файловойсистеме, позволяет управлять всей операционной системой и ее приложениями. Например, мы можем работать с реестром Windows как с обычной файловой системой.
· В Windows 7 PowerShell обзавелся графической средой разработки. Программировать сценарии стало еще проще и понятней. Среда обладает всеми необходимыми средствами для комфортной разработки (Отладчик, подсветка синтаксиса и т.д.), что делает процесс разработки схожим с созданием приложения в таких средах как Visual Studio.
· Количество доступных командлетов существенно возросло. Добавились командлеты для получения информации и управления такими службами как: IIS, ActiveDirectory и т.д.
· Поддержка удаленной работы дарит возможность одновременно выполнять команды на удаленных компьютерах с одного, на котором работает служба.
· Несмотря на сходство с командной строкой, PowerShell предоставляет значительно больше функций и более гибка в использовании.
Алиасы. Механизм псевдонимов, реализованный в оболочке PowerShell, дает возможность пользователям выполнять команды по их альтернативным именам (например, вместо команды Get-Childitem можно пользоваться псевдонимом dir). В PowerShell заранее определено много псевдонимов, можно также добавлять собственные псевдонимы в систему.
Псевдонимы в PowerShell делятся на два типа. Первый тип предназначен для совместимости имен с разными интерфейсами. Псевдонимы этого типа позволяют пользователям, имеющим опыт работы с другими оболочками (Cmd.exe или Unix-оболочки), использовать знакомые им имена команд для выполнения аналогичных операций в PowerShell, что упрощает освоение новой оболочки, позволяя не тратить усилий на запоминание новых команд PowerShell. Например, пользователь хочет очистить экран. Если у него есть опыт работы с Cmd.exe, то он, естественно, попробует выполнить команду cls. PowerShell при этом выполнит командлет Clear-Host, для которого cls является псевдонимом и который выполняет требуемое действие – очистку экрана. Для пользователей Cmd.exe в PowerShell определены псевдонимы cd, cls, copy, del, dir, echo, erase, move, popd, pushd, ren, rmdir, sort, type; для пользователей Unix – псевдонимы cat, chdir, clear, diff, h, history, kill, lp, ls, mount, ps, pwd, r, rm, sleep, tee, write.
|
Узнать, какой именно командлет скрывается за знакомым псевдонимом, можно с помощью командлета Get-Alias:
PS C:\> Get-Alias cdCommandType Name Definition----------- ---- ----------Alias cd Set-LocationПсевдонимы второго типа (стандартные псевдонимы) в PowerShell предназначены для быстрого ввода команд. Такие псевдонимы образуются из имен командлетов, которым они соответствуют. Например, глагол Get сокращается до g, глагол Set сокращается до s, существительное Location сокращается до l и т.д. Таким образом, для командлету Set-Location соответствует псевдоним sl, а командлету Get-Location – псевдоним gl.
Просмотреть список всех пседонимов, объявленных в системе, можно с помощью командлета Get-Alias без параметров. Определить собственный псевдоним можно с помощью командлета Set-Alias.
Командлеты. Командлет – аналог внутренней команды интерпретатора командной строки - представляет собой класс.NET, порожденный от базового класса Cmdlet; разрабатываются командлеты с помощью пакета PowerShell Software Developers Kit (SDK). Единый базовый класс Cmdlet гарантирует совместимый синтаксис всех командлетов, а также автоматизирует анализ параметров командной строки и описание синтаксиса командлетов для встроенной справки. Командлеты рассматриваются в данной работе. С командами других типов можно ознакомиться, используя [1].
Данный тип команд компилируется в динамическую библиотеку (DLL) и подгружается к процессу PowerShell во время запуска оболочки (то есть сами по себе командлеты не могут быть запущены как приложения, но в них содержатся исполняемые объекты). Командлеты – это аналог внутренних команд традиционных оболочек.
В PowerShell аналогом внутренних команд являются командлеты. Командлеты могут быть очень простыми или очень сложными, но каждый из них разрабатывается для решения одной, узкой задачи. Работа с командлетами становится по-настоящему эффективной при использовании их композиции (конвейеризации объектов между командлетами).
Команды WindowsPowerShell следуют определенным правилам именования:
· Команды WindowsPowerShell состоят из глагола и существительного (всегда в единственном числе), разделенных тире. Глагол задает определенное действие, а существительное определяет объект, над которым это действие будет совершено. Команды записываются на английском языке. Пример: Get-Help вызывает интерактивную справку по синтаксису WindowsPowerShell.
· Перед параметрами ставится символ «-». Например: Get-Help –Detailed.
· В Windows PowerShell также включены псевдонимы многих известных команд. Это упрощает знакомство и использование Windows PowerShell. Пример: команды help (классический стиль Windows) и man (классический стиль Unix) работают так же, как и Get-Help.
|
Например, Get-Process (получить информацию о процессе), Stop-Service (остановить службу), Clear-Host (очистить экран консоли) и т.д. Чтобы просмотреть список командлетов, доступных в ходе текущего сеанса, нужно выполнить командлет Get-Command.
По умолчанию командлет Get-Command выводит сведения в трех столбцах: CommandType, Name и Definition. При этом в столбце Definition отображается синтаксис командлетов (многоточие (…) в столбце синтаксиса указывает на то, что данные обрезаны).
Замечание. Косые черты (/ и \) вместе с параметрами в оболочке Windows PowerShell не используются.
В общем случае синтаксис командлетов имеет следующую структуру:
имя_командлета –параметр1 -параметр2 аргумент1 аргумент2Здесь параметр1 – параметр (переключатель), не имеющий значения; параметр2 – имя параметра, имеющего значение аргумент1; аргумент2 – параметр, не имеющий имени. Например, командлет Get-Process имеет параметр Name, который определяет имя процесса, информацию о котором нужно вывести. Имя этого параметра указывать необязательно. Таким образом, для получения сведений о процессе Far можно ввести либо команду Get-Process -Name Far, либо команду Get-Process Far.
|
|
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!