Книга: Windows Script Host для Windows 2000/XP

Работа с параметрами командной строки сценария

Работа с параметрами командной строки сценария

Используя аргументы командной строки, в сценарии можно передавать различную информацию, скажем, те или иные переключатели или имена пользователей и рабочих станций. При задании аргумента можно указать либо только его значение, либо имя вместе со значением в следующем формате: "Имя_аргумента:Значение".

Замечание

Как в имени аргумента, так и в его значении могут использоваться символы кириллицы.

Например, выполнив в командном окне строку

cscript Example.js /Имя:"Андрей Попов" /Возраст:30

или

cscript Example.js /Возраст:30 /Имя:"Андрей Попов"

мы передадим в сценарий Example.js два параметра: "Имя" со значением "Андрей Попов" и "Возраст" со значением "30". Значения этих параметров можно было передать и как безымянные параметры:

cscript Example.js "Андрей Попов" 30

Однако в последнем случае при задании безымянных аргументов будет важен порядок их указания в командной строке.

В WSH для обработки параметров командной строки служат следующие объекты-коллекции:

? WshArguments (содержит все параметры, как именные, так и безымянные);

? WshNamed (содержит только именные параметры);

? WshUnnamed (содержит только безымянные параметры).

Замечание

Описание аргументов командной строки в сценариях можно задавать с помощью XML-элементов <runtime>, <named> и <unnamed> (см. главу 3).

Для доступа к коллекциям, содержащим аргументы командной строки, в сценарии сначала нужно создать переменную-экземпляр объекта WshArguments; для этого используется свойство Arguments объекта WScript. Пример на языке JScript:

var objArgs=WScript.Arguments;

Для создания экземпляров коллекций WshNamed и WshUnnamed используются соответственно методы Named и Unnamed объекта WshArguments. Например:

var objNamedArgs=objArgs.Named;
var objUnnamedArgs=objArgs.Unnamed;

Методы и свойства коллекций WshArguments, WshNamed и WshUnnamed подробно описаны в главе 1. Отметим здесь только, что для корректной работы с параметрами командной строки, имена которых содержат символы кириллицы, эти имена в сценарии должны быть написаны в кодировке Windows.

В листингах 2.21 и 2.22 приведены примеры сценариев на языках JScript и VBScript, которые выводят на экран общее количество параметров командной строки, количество именных и безымянных аргументов, а также значения каждой из этих групп параметров. Результат работы этих сценариев, запущенных в консольном режиме, представлен на рис. 2.8.


Рис. 2.8. Результат работы сценария Args.js

Листинг 2.21. Доступ к параметрам командной строки запущенного сценария (JScript)

/********************************************************************/
/* Имя: Args.js                                                     */
/* Язык: JScript                                                    */
/* Описание: Работа с аргументами запущенного сценария              */
/********************************************************************/
var
 i,objArgs,s,objNamedArgs,objUnnamedArgs;  //Объявляем переменные
objArgs = WScript.Arguments;  //Создаем объект WshArguments
//Определяем общее количество аргументов
s="Всего аргументов: "+objArgs.Count()+"n";
for (i=0; i<=objArgs.Count()-1; i++)
 s+=objArgs(i)+"n"; //Формируем строки со значениями аргументов
objUnnamedArgs=objArgs.Unnamed;  //Создаем объект WshUnnamed
//Определяем количество безымянных аргументов
s+="nБезымянных аргументов: "+objUnnamedArgs.length+"n";
for (i=0; i<=objUnnamedArgs.length-1; i++)
 //Формируем строки со значениями безымянных аргументов
 s+=objUnnamedArgs(i)+"n";
objNamedArgs=objArgs.Named; //Создаем объект WshNamed
//Определяем количество именных аргументов
s+="nИменных аргументов: "+objNamedArgs.length+"n";
//Проверяем, существует ли аргумент /Имя:
if (objNamedArgs.Exists("Имя")) s+=objNamedArgs("Имя")+"n";
//Проверяем, существует ли аргумент /Comp:
if (objNamedArgs.Exists("Comp")) s+=objNamedArgs("Comp")+"n";
WScript.Echo(s);  //Выводим сформированные строки
/*************  Конец *********************************************/

Листинг 2.22. Доступ к параметрам командной строки запущенного сценария (VBScript)

'********************************************************************
' Имя: Args.vbs
' Язык: VBScript
' Описание: Работа с аргументами запущенного сценария
'********************************************************************
Option Explicit
Dim i,Arg,objArgs,s,objNamedArgs,objUnnamedArgs  ' Объявляем переменные
Set objArgs = WScript.Arguments  ' Создаем объект WshArguments
' Определяем общее количество аргументов
s="Всего аргументов: " & objArgs.Count() & vbCrLf
For Each Arg In objArgs
 s=s & Arg & vbCrLf  ' Формируем строки со значениями аргументов
Next
Set objUnnamedArgs=objArgs.Unnamed  ' Создаем объект WshUnnamed
' Определяем количество безымянных аргументов
s=s & vbCrLf & "Безымянных аргументов: " & objUnnamedArgs.length & vbCrLf
For Each Arg In objUnnamedArgs
 ' Формируем строки со значениями безымянных аргументов
 s=s & Arg & vbCrLf
Next
Set objNamedArgs=objArgs.Named  ' Создаем объект WshNamed
' Определяем количество именных аргументов
s=s & vbCrLf & "Именных аргументов: " & objNamedArgs.Length & vbCrLf
' Проверяем, существует ли аргумент /Имя:
If objNamedArgs.Exists("Имя") Then
 s=s & objNamedArgs("Имя") & vbCrLf
End If
' Проверяем, существует ли аргумент /Comp:
If objNamedArgs.Exists("Comp") Then
 s=s & objNamedArgs("Comp") & vbCrLf
End If
WScript.Echo s   ' Выводим сформированные строки
'*************  Конец *********************************************

Оглавление книги


Генерация: 1.332. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз