Андрей Попов - Windows Script Host для Windows 2000/XP
В В 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("Компьютер"))
  //Получаем значение символьного аргумента /Компьютер
  s+="Машина: "+objNamedArgs("Компьютер")+"n";
В //Проверяем, существует ли аргумент /НовыйВ
 if (objNamedArgs.Exists("Новый"))
  //Получаем с помощью условного оператора значение
  //логического аргумента /Новый
  s+="Новый пользователь: "+(objNamedArgs("Новый") ? "Да" : "Нет");
 //Выводим полученные строки на экран
В WScript.Echo(s);
В </script>
</job>
Рлемент <unnamed>
С помощью элементов <unnamed> можно описывать (документировать) безымянные параметры командной строки сценария. В табл. 3.2 приведено описание аргументов элемента <unnamed>.
Таблица 3.2. Аргументы элемента <unnamed>
Аргумент Описание name Задает РёРјСЏ, которое будет указано для описываемого параметра командной строки РїСЂРё выводе информации Рѕ сценарии helpstring Строка, содержащая описание параметра командной строки many Определяет, сколько раз может быть указан безымянный параметр РІ командной строке. Значение, равное "true" (используется РїРѕ умолчанию), означает, что безымянный параметр может встретиться РІ командной строке более РѕРґРЅРѕРіРѕ раза. Значение, равное "false", означает, что безымянный параметр должен быть указан только РѕРґРёРЅ раз required Определяет, является ли безымянный параметр командной строки обязательным. Может принимать значения "true", "on" или 1 (параметр нужно указывать обязательно), "false", "off" или 0 (параметр можно РЅРµ указывать). Также значением аргумента "required" может быть целое число, которое показывает, сколько раз безымянный параметр должен обязательно быть указан РІ командной строкеРнформация, которая указывается для объявляемого РІ элементе <unnamed> параметра командной строки, используется, как Рё РІ случае элемента <named>, только для самодокументируемости сценария Рё никак РЅРµ влияет РЅР° реальные значения, которые Р±СѓРґСѓС‚ указаны РІ командной строке РїСЂРё запуске сценария. Например, если безымянный параметр объявлен как обязательный (required="true"), РЅРѕ РІ действительности РЅРµ был указан РїСЂРё запуске сценария, то никакой ошибки РІРѕ время работы РЅРµ произойдет.
Рассмотрим в качестве примера сценарий unnamed.wsf, в который в качестве параметров командной строки должны передаваться расширения файлов, причем обязательно должны быть указаны хотя бы два таких расширения (листинг 3.4).
Для создания информации об использовании этого сценария создается элемент <unnamed> следующего вида:
<unnamed name="Расш" helpstring="Расширения файлов" many="true" required=2/>
После запуска с помощью wscript.exe в сценарии unnamed.wsf сначала вызывается метод WScript.Arguments.Usage, в результате чего на экран выводится диалоговое окно с информацией о сценарии и параметрах командной строки (рис. 3.4).
Рис. 3.4. Диалоговое окно с информацией о параметрах сценария unnamed.wsf
Затем в сценарии создается коллекция objUnnamedArgs (объект WshUnnamed), которая содержит все безымянные аргументы командной строки, реально переданные в сценарий:
objUnnamedArgs=WScript.Arguments.Unnamed; //Создаем объект WshUnnamed
После этого определяется общее число реально переданных в сценарий параметров командной строки (свойство length) и в цикле while организуется перебор всех элементов коллекции objUnnamedArgs.
//Определяем количество безымянных аргументов
s="Передано в сценарий безымянных аргументов: "+objUnnamedArgs.length;
for (i=0; i<=objUnnamedArgs.length-1; i++)
 //Формируем строки со значениями безымянных аргументов
В s+="n"+objUnnamedArgs(i);
//Выводим полученные строки на экран
WScript.Echo(s);
Если запустить сценарий unnamed.wsf следующим образом:
wscript.exe unnamed.wsf vbs js
то на экран будет выведено диалоговое окно, показанное на рис. 3.5.
Рис. 3.5. Значения безымянных аргументов командной строки, переданных в unnamed.wsf
Листинг 3.4. Файл unnamed.wsf<job id="Unnamed">
В <runtime>
В <description>
В РРјСЏ: unnamed.wsf
В РљРѕРґРёСЂРѕРІРєР°: Windows