В статье "Windows Script Host: типы файлов", мы говорили о том, что Windows Script Host (WSH) представляет собой реализованный на базе технологии COM сервер, предназначенный для выполнения сценариев в среде Windows. В нем изначально имеется поддержка языков JScript и VBScript, однако возможно использование и других языков, если будут дополнительно установлены соответствующие компоненты.
Посредством WSH могут выполняться как автономные сценарии (т.е. написанные на каком-то определенном языке), так и сценарии .wsf (Windows Script file). Сценарии последнего типа представляют собой текстовые файлы формата XML, которые могут содержать код, реализованный более чем на одном языке. И хотя эти сценарии имеют несколько более сложную структуру, они предоставляют в распоряжение разработчика ряд полезных возможностей, которые весьма затруднительно реализовать в автономных сценариях.
Формат XML файлов .wsf
Формат XML, который используется в файлах .wsf, во многом похож на тот, что применяется в HTML. В XML используются теги разметки, заключаемые в угловые скобки (<>), называемые элементами, которые описывают данные файла. Полный перечень элементов XML, используемый в файлах .wsf можно найти по адресу: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsorixmlelements.asp. Ниже приводится краткий обзор синтаксиса XML:
- Для того чтобы указать, что файл имеет формат XML, он должен начинаться с элемента .
- Все элементы чувствительны к регистру и должны заключаться в угловые скобки.
- Тег, открывающий элемент, должен иметь вид <имя_элемента>, в закрывающем теге после открывающей угловой скобки должен стоять символ прямого слеша, после которого следует имя элемента (т.е. имя_элемента>.
- Элемент может иметь один или несколько атрибутов, которые записываются в виде атрибут="значение". Значение атрибута должно быть заключено в двойные кавычки. Например, <элемент атрибут1= "значение1" атрибут2="значение2">.
- Если у элемента нет закрывающего тега, то в этом случае в открывающем теге перед закрывающейся угловой скобкой необходимо использовать символ прямого слеша. Пример: <элемент атрибут="значение"/>.
- Элемент может включать в себя другие элементы, но в этом случае теги не должны перекрываться (т.е. открывающий и закрывающий теги внутреннего элемента должны предшествовать закрывающему тегу внешнего элемента).
- Допускается использование элементов-комментариев, что осуществляется путем вставки текста между открывающим тегами.
Если используется тег , то в этом случае символы угловых скобок (< и >) и знак амперсанда (&) имеют специальное значение для обработчика XML, и когда он встречает их в содержимом элемента, то заменяет на последовательности символов <, >, и &, соответственно.
Однако эти символы достаточно часто встречаются в коде VBScript и JScript. Поэтому чтобы исключить замену этих элементов в тексте сценариев, и вместе с тем избежать проблем обработки XML, фрагменты кода VBScript и JScript нужно размещать внутри маркеров .
В Листинге 1 показан минимальный набор элементов XML для построения сценария .wsf. Он должен содержать хотя бы один элемент
Также следует обратить внимание на то, что файл, на который организуется ссылка, содержит только код на соответствующем языке сценариев, и в нем нет никаких элементов XML. Например, код из другого файла .wsf подключить нельзя.
Самодокументирующиеся сценарии
Для того чтобы сделать сценарий самодокументирующимся в элемент
Элемент <description>. Внутри элемента
Элемент <unnamed>. В элементе
Кроме того, элемент
Элемент <named>. Элемент
Здесь существует также дополнительный атрибут type (тип), определяющий тип данных аргумента, он может принимать значения "string", "boolean", или "simple". По умолчанию используется значение "simple". Значение этого атрибута влияет на отображение справочного сообщения. Если выбрано type="string", то к аргументу добавляется символ двоеточия (:) и слово value, указывающее на необходимость ввода значения. Если выбрано type="boolean", то в этом случае к аргументу добавляется строка [+|-], а это говорит о том, что после имени аргумента необходимо задать символ плюс (+) или минус (-). Если же выбирается type="simple" (либо данный атрибут опущен), аргумент отображается "как есть".
Важно отметить, что элементы
Элемент <example>. Элемент
Элемент <usage>. Если вас не устраивает текст, который отображается в справочном сообщении по умолчанию, то с помощью элемента
В Листинге 3 приведен пример сценария, в котором применяются элементы
Многоязычные сценарии
Еще одной сильной стороной сценариев .wsf является возможность включения в них кода, написанного на разных языках. Соответственно, элемент
Листинг 2: Подключение кода из файла автономного сценария
Листинг 3: Сценарий, демонстрирующий использование элементов
helpstring="Компьютер, к которому выполняется подключение"
required="true"
/>
helpstring="Имя пользователя для подключения (не обязательно)"
type="string"
/>
helpstring="Пароль для подключения (не обязательно)"
type="string"
/>
Листинг 4: Пример простого многоязычного сценария
Листинг 5: Пример простого многозадачного сценария