Андрей Попов - Windows Script Host для Windows 2000/XP
Для того чтобы задать режим строгой обработки сценария, нужно поместить элемент <?xml?> в самой первой строке сценария — никаких других символов или пустых строк перед ним быть не должно. При такой обработке WS-файла нужно четко следовать всем правилам стандарта XML. Код сценария должен быть помещен в секцию CDATA, которая начинается с символов "<![CDATA[" и заканчивается символами "]]>".
ЗамечаниеВ WSH 5.6 названия и значения атрибутов в элементе <?xml?> должны быть именно такими, как в листинге 3.1 (version="1.0" и standalone="yes").
Рлемент <?job?>
Рлемент <?job?> задает режим отладки РїСЂРё выполнении WS-файла. Если значение атрибута debug равно true, то задание может быть выполнено РІРѕ внешнем отладчике (СЃРј. приложение 3). Если же значение атрибута debug равно false, то отладчик для этого задания применен быть РЅРµ может. РџРѕ умолчанию debug имеет значение false.
Рлемент <package>
Ртот элемент необходим РІ тех WS-файлах, РІ которых СЃ помощью элементов <job> определено более РѕРґРЅРѕРіРѕ задания. Р’ этом случае РІСЃРµ эти задания должны находиться внутри пары тегов <package> Рё </package> (СЃРј. листинг 3.1). Другими словами, <package> является контейнером для элементов <job>.
Если же в WS-файле определено только одно задание, то элемент <package> можно не использовать.
Рлемент <job>
Рлементы <job> позволяют определять несколько заданий (независимо выполняющихся частей) РІ РѕРґРЅРѕРј WS-файле. Рначе РіРѕРІРѕСЂСЏ, между тегами <job> Рё </job> будет находиться отдельный сценарий (который, РІ СЃРІРѕСЋ очередь, может состоять РёР· нескольких частей, написанных, возможно, РЅР° разных языках).
У элемента <job> имеется единственный атрибут id, который определяет уникальное имя задания. Например, в сценарии two_jobs.wsf определяются два задания с именами "Task1" и "Task2" (листинг 3.2).
Листинг 3.2. Файл two_jobs.wsf<package>
<job id="Task1">
<!-- Описываем первое задание (id="Task1") -->
<script language="VBScript">
 WScript.Echo "Выполняется первое задание (VBScript)"
</script>
</job>
<job id="Task2">
<!-- Описываем второе задание (id="Task1") -->
<script language="JScript">
 WScript.Echo "Выполняется второе задание (JScript)"
</script>
</job>
</package>
Для того чтобы запустить конкретное задание из многозадачного WS-файла, нужно воспользоваться параметром //job:"JobID" в командной строке WSH. Например, следующая команда:
cscript //job:"Task1" two_jobs.wsf
запускает с помощью cscript.exe задание с именем "Task1" из файла two_jobs.wsf.
ЗамечаниеЕсли параметр //job не указан, то по умолчанию из многозадачного WS-файла запускается первое задание.
Если РІ WS-файле имеется несколько заданий, то РѕРЅРё должны находиться внутри элемента <package>. Рлемент <job> является РѕРґРЅРёРј РёР· РґРІСѓС… обязательных элементов РІ сценариях WSH СЃ разметкой XML.
Рлемент <runtime>
При запуске почти всех стандартных команд или утилит командной строки Windows с ключом /? на экран выводится встроенная справка, в которой кратко описываются назначение и синтаксис этой команды или утилиты (рис. 3.1).
Рис. 3.1. Встроенная справка для команды COPY
Хорошим тоном считается создание такой справки и для разрабатываемых сценариев WSH. Понятно, что добавление в сценарий функции вывода информации о назначении, синтаксисе и аргументах этого сценария потребовало бы написания довольно большого количества кода: необходимо следить за ключом /? в командной строке, а при добавлении нового параметра командной строки возникнет необходимость изменения функции, отвечающей за вывод информации на экран.
Рлемент <runtime> позволяет сделать сценарий самодокументируемым, С‚.Рµ. РІ этом случае РїСЂРё задании РІ командной строке ключа /? РЅР° экран будет автоматически выводиться информация РѕР± использовании сценария, Рѕ его синтаксисе Рё аргументах (именных Рё безымянных), Р° также пример запуска сценария СЃ конкретными значениями аргументов.
При этом сам элемент <runtime> является лишь контейнером, а содержимое для вывода информации хранится в элементах <named> (описание именных параметров командной строки), <unnamed> (описание безымянных параметров командной строки), <description> (описание самого сценария) и <example> (пример запуска сценария), которые находятся внутри <runtime>.
ЗамечаниеРлемент <runtime> является дочерним относительно <job>, поэтому РІСЃРµ описания, приведенные внутри <runtime>, относятся только Рє текущему заданию.
Рлемент <named>
С помощью элементов <named> можно описывать (документировать) именные параметры командной строки сценария. В табл. 3.1 приведено описание аргументов элемента <named>.