Элемент <named>

Элемент <named>

С помощью элементов <named> можно описывать (документировать) именные параметры командной строки сценария. В табл. 3.1 приведено описание аргументов элемента <named>.

Таблица 3.1. Аргументы элемента <named>

Аргумент Описание name Задает имя параметра командной строки helpstring Строка, содержащая описание параметра командной строки type Определяет тип параметра командной строки. Может принимать значения "string" (символьный тип), "boolean" (логический тип), "simple" (в сценарий передается только имя параметра без дополнительного значения). По умолчанию используется тип "simple" required Используется для того, чтобы показать, является ли параметр командной строки обязательным. Может принимать значения "true" (параметр нужно указывать обязательно) и "false" (параметр можно не указывать)

Информация, которая указывается для объявляемого в элементе <named> параметра командной строки, используется только для самодокументируемости сценария и никак не влияет на реальные значения, которые будут указаны в командной строке при запуске сценария. Например, если параметр объявлен как обязательный (required="true"), но в действительности не был указан при запуске сценария, то никакой ошибки во время работы не произойдет.

Если для аргумента командной строки сценария указан тип "string", то предполагается, что этот аргумент имеет имя и значение, разделенные символом ":", например:

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

Если в качестве типа параметра командной строки используется "simple", то для этого параметра в командной строке указывается только его имя без значения:

/Имя /Возраст

Для того чтобы передать в сценарий аргумент командной строки типа "boolean", нужно после имени этого аргумента указать символ "+" (соответствует логическому значению "истина") или "-" (соответствует значению "ложь"). Например:

/Запись+ /ReWrite-

В листинге 3.3 приведен сценарий named.wsf, в котором в блоке <runtime> описываются три именных аргумента командной строки:

? /Имя (обязательный аргумент символьного типа);

? /Компьютер (необязательный аргумент символьного типа);

?  /Новый (обязательный аргумент логического типа).

После запуска с помощью wscript.exe в сценарии named.wsf сначала вызывается метод WScript.Arguments.Usage, в результате чего на экран выводится диалоговое окно с информацией о сценарии и параметрах командной строки (рис. 3.2).

Рис. 3.2. Диалоговое окно с информацией о параметрах сценария named.wsf

Затем в сценарии проверяется, какие именно аргументы командной строки были подставлены при запуске, и выделяются значения этих аргументов. Для этого создается объект WshNamed, являющийся коллекцией именных аргументов командной строки, и используется метод Exists этого объекта:

//Создаем объект WshNamed — коллекция именных аргументов сценария

objNamedArgs= WScript.Arguments.Named;

s="";

//Проверяем, существует ли аргумент /Имя:

if (objNamedArgs.Exists("Имя"))

 //Получаем значение символьного аргумента /Имя

 s+="Имя: "+objNamedArgs("Имя") +" ";

//Проверяем, существует ли аргумент /Компьютер:

if (objNamedArgs.Exists("Компьютер"))

 //Получаем значение символьного аргумента /Компьютер

 s+="Машина: "+objNamedArgs("Компьютер") + " ";

Значением параметра /Новый является константа логического типа (true или false), поэтому для формирования строки, соответствующей этому значению, используется условный оператор языка JScript:

//Проверяем, существует ли аргумент /Новый

if (objNamedArgs.Exists("Новый"))

 //Получаем с помощью условного оператора значение

 //логического аргумента /Новый

 s+="Новый пользователь: "+(objNamedArgs("Новый") ? "Да" : "Нет");

Если запустить сценарий named.wsf следующим образом:

wscript.exe named.wsf /Имя:Popov /Компьютер:404_Popov /Новый+

то на экран будет выведено диалоговое окно, показанное на рис. 3.3.

Рис. 3.3. Значения именных аргументов командной строки, переданных в named.wsf

Листинг 3.3. Файл named.wsf

<job id="Named">

 <runtime>

  <description>

  Имя: named.wsf

  Кодировка: Windows

  </description>

  <named

   name="Имя"

   helpstring="Имя пользователя"

   type="string" required="true"/>

  <named

   name="Компьютер"

   helpstring="Имя рабочей станции"

   type="string" required="false"/>

  <named

   name="Новый"

   helpstring="Признак того, что такого пользователя раньше не было"

   type="boolean" required="true"/>

 </runtime>

 <script language="JScript">

  var objNamedArgs,s;

  s="";

  //Вызываем метод ShowUsage для вывода на экран описания сценария

  WScript.Arguments.ShowUsage();

  //Создаем объект WshNamed - коллекция именных аргументов сценария

  objNamedArgs= WScript.Arguments.Named;

  //Проверяем, существует ли аргумент /Имя:

  if (objNamedArgs.Exists("Имя"))

   //Получаем значение символьного аргумента /Имя

   s+="Имя: "+objNamedArgs("Имя")+" ";

  //Проверяем, существует ли аргумент /Компьютер:

  if (objNamedArgs.Exists("Компьютер"))

   //Получаем значение символьного аргумента /Компьютер

   s+="Машина: "+objNamedArgs("Компьютер")+" ";

  //Проверяем, существует ли аргумент /Новый 

  if (objNamedArgs.Exists("Новый"))

   //Получаем с помощью условного оператора значение

   //логического аргумента /Новый

   s+="Новый пользователь: "+(objNamedArgs("Новый") ? "Да" : "Нет");

  //Выводим полученные строки на экран

  WScript.Echo(s);

 </script>

</job>