Андрей Попов - Windows Script Host для Windows 2000/XP
В РРјСЏ: strict.wsf
В РљРѕРґРёСЂРѕРІРєР°: Windows
 Описание: Пример строгого режима обработки WS-файла
В </description>
В </runtime>
В <script language="JScript">
В <![CDATA[
  WScript.Echo("Всем привет!");
В ]]>
В </script>
</job>
Несколько заданий РІ РѕРґРЅРѕРј файлеВ
Каждое отдельное задание в WS-файле должно находиться внутри элементов <job> и </job>. В свою очередь, все элементы <job> являются дочерними элементами контейнера <package>.
В качестве примера рассмотрим сценарий multijob.wsf, приведенный в листинге 3.9. Здесь описываются два задания с идентификаторами "VBS" (сценарий на языке VBScript) и "JS" (сценарий на языке JScript).
Листинг 3.9. Файл multijob.wsf<package>
В <job id="VBS">
 <!-- Описываем первое задание (id="VBS") -->
В <runtime>
В В <description>
В В РРјСЏ: multijob.wsf
В В РљРѕРґРёСЂРѕРІРєР°: Windows
  Описание: Первое задание из example.wsf
В В </description>
В </runtime>
В <script language="VBScript">
  WScript.Echo "Первое задание (VBScript)"
В </script>
В </job>
В <job id="JS">
 <!-- Описываем второе задание (id="JS") -->
В <runtime>
В В <description>
В В РРјСЏ: example.wsf
В В РљРѕРґРёСЂРѕРІРєР°: Windows
  Описание: Второе задание из example.wsf
В В </description>
В </runtime>
В <script language="JScript">
  WScript.Echo("Второе задание (JScript)");
В </script>
В </job>
</package>
Для того чтобы выполнить первое задание сценария multijob.wsf, которое выведет на экран строку "Первое задание (VBScript)", нужно выполнить одну из следующих команд:
cscript //job:"VBS" multijob.wsf
cscript multijob.wsf
wscript //job:"VBS" multijob.wsf
wscript multijob.wsf
Для запуска второго задания, выводящего на экран строку "Второе задание (JScript)", нужно явно указывать идентификатор этого задания, поэтому используется одна из двух команд:
cscript //job:"JS" multijob.wsf
wscript //job:"JS" multijob.wsfВ
Рспользование констант внешних объектов
Для того чтобы в сценарии обращаться по имени к константам, определенным во внешних объектах, не создавая экземпляров самих объектов, необходимо сначала получить ссылку на эти объекты с помощью элемента <reference>.
В листинге 3.10 приведен сценарий refer.wsf, в котором с помощью элемента <reference> производится доступ к трем константам объекта FileSystemObject (ForReading, ForWriting и ForAppending), которые определяют режим работы из сценария с внешним текстовым файлом.
Листинг 3.10. Рспользование РІ сценарии констант внешних объектов (файл refer.wsf)<job id="Example">
В <runtime>
В <description>
В РРјСЏ: refer.wsf
В РљРѕРґРёСЂРѕРІРєР°: Windows
 Описание: Рспользование констант внешних объектов
В </description>
В </runtime>
 <!-- Получаем ссылку на объект FileSystemObject -->
В <reference object="Scripting.FileSystemObject"/>
В <script language="JScript">
В var s;
 s="Значения констант объекта FileSystemObject:nn";
 //Получаем значение константы ForReading
В s+="ForReading="+ForReading+"n";
 //Получаем значение константы ForWriting
В s+="ForWriting="+ForWriting+"n";
 //Получаем значение константы ForAppending
В s+="ForAppending="+ForAppending;
 //Выводим полученные строки на экран
В WScript.Echo(s);
В </script>
</job>
В результате выполнения сценария refer.wsf на экран выведется диалоговое окно с информацией о значениях констант объекта FileSystemObject (рис. 3.8).
Р РёСЃ. 3.8. Результат работы сценария refer.wsfВ
Подключение внешних файлов
К WS-файлу можно подключать "обычные" JScript- или VBScript-сценарии, которые находятся во внешних файлах. Для этого нужно указать путь к этому внешнему файлу в атрибуте src элемента <script>.
Для примера создадим файл inc.js, в который запишем строку
WScript.Echo("Здесь выполняется сценарий inc.js");
и файл main.wsf, содержание которого приведено в листинге 3.11.
Листинг 3.11. Подключение внешнего сценария (файл main wsf)<job id="Example">
В <runtime>
В <description>
В РРјСЏ: main.wsf
В РљРѕРґРёСЂРѕРІРєР°: Windows
 Описание: Подключение сценария, находящегося во внешнем файле
В </description>
В </runtime>
 <!-- Подключаем сценарий из файла inc.js -->
В <script language="JScript" src="inc.js"/>
 <!-- Определяем основной сценарий -->
В <script language="JScript">
 WScript.Echo("Здесь выполняется основной сценарий");
В </script>
</job>
Если запустить main.wsf с помощью cscript.exe, то на экран выведутся две строки:
Здесь выполняется сценарий inc.js
Здесь выполняется основной сценарий
Два языка внутри одного задания (использование функции InputBox языка VBScript в сценариях JScript)
Как уже отмечалось в главе 2, ни в WSH, ни в JScript нет метода или функции, которые позволяли бы в графическом режиме создать диалоговое окно для ввода текста. Однако в языке VBScript имеется функция InputBox, предназначенная как раз для этой цели; используя разметку XML, мы можем легко использовать эту функцию в сценариях JScript. Соответствующий пример приведен в сценарии multilang.wsf (листинг 3.12).
Сначала в этом сценарии на языке VBScript описывается функция InputName, которая возвращает строку, введенную с помощью функции InputBox: