Выбрать главу

Если для аргумента командной строки сценария указан тип "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("Имя") +"\n";

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

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

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

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

Значением параметра /Новый является константа логического типа (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("Имя")+"\n";

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

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

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