Знакомство с ws-файлами (windows script file)

Знакомство с ws-файлами (windows script file) Примеры скриптов и макросов для Word и WSH

Windows Script Host предоставляет пользователю такую полезность, как ws-файл, это файлы с расширением .wsf (windows script file). Полезность заключается в том, что в одном сценарии вы можете использовать сразу несколько скриптовых языков программирования (vbscript, jscript, perl или phyton). Давайте перейдем непосредственно к описанию основных преимуществ ws-файлов (windows script file):

Как я уже сказал, возможность использовать в одном сценарии несколько языков

  • Подключение внешних файлов
  • Возможность вызывать функции одного языка в другом
  • Определение нескольких задач в теле сценария

В отличии от js и vbs файлов, ws (windows script file) сценарии требуют использования xml разметки, которая. Давайте напишем простой пример, что бы вы сразу увидели что и как:

<jobid="ID1"><!-- ***************************** --><!--файл ws --><!-- echo.wsf --><!-- ***************************** -->     <scriptlanguage="JScript">                 WScript.Echo ("Первое сообщение");     </script>     <scriptlanguage="VBScript">                 WScript.Echo "Второе сообщение"     </script></job>

В данном примере используется несколько XML элементов:

<job id="ID1">…</job> — элемент jobпозволяет задать в сценарии несколько заданий, доступ к которым осуществляется по значению параметра id, в данном случае задание лишь одно.

<!— … —> — как вы уже поняли, в середине этих тегов прописывается комментарий, они не обязательно должны быть в одной строке, такой вариант тоже верен:

<!--*****************************файл wsecho.wsf*****************************-->

<script language=" ">…</script> — между этими тегами прописывается код сценария, язык определяется параметром language. В данном примере мы одновременно использовали синтаксис Jscript и VBScript.

Хорошо, теперь давайте попробуем расширить возможности сценария:

<!--*****************************файл wsjob.wsfпример использования элемента <job>*****************************--><package><jobid="ID1"><scriptlanguage="VBScript">WScript.Echo "Первое задание"</script></job><jobid="ID2"><scriptlanguage="JScript">WScript.Echo ("Второе задание");</script></job></package>

Тут у нас появился новый элемент <package>…</package>, он нужен в тех WS-файлах, для которых прописано более одного задания. Так, мы прописали два задания с идентификаторами ID1 и ID2. Если WS-файл содержит лишь одно задание, то надобности в нет. Как видим, в первом задании выполняется код на VBScript, а во втором – на JScript, если теперь запустить сценарий, то появится лишь первое сообщение. Что бы вызвать из ws-файла .wsf (windows script file) нужное нам задание, надо прибегнуть к помощи командной строки:

cscript //job:"ID2" job.wsf

или

wscript //job:"ID2" job.wsf

Тут мы использовали параметр //job сервера Windows Script Host, после двоеточия прописывается идентификатор задания и путь к ws-файлу. В первом запуск производится в консольном режиме, а во втором – в стандартном оконном.

Теперь давайте посмотрим на то, как происходит подключение внешних файлов для сценариев windows script file. Создайте предварительно файл hello.js со следующей строкой:

WScript.Echo ("Это внешний файл");

Теперь в том же каталоге создайте ws файл с именем src.wsf и пропишите в нем следующий код:

<jobid="T1"><scriptlanguage="JScript"src="hello.js"/><scriptlanguage="VBScript">WScript.Echo "Код сценария"</script></job>

Тут атрибут src позволяет подключить внешний сценарий, в нашем случае это hello.js. После запуска скрипта, появятся два сообщения.

Подключение внешних файлов

Хорошо, тепеь представим ситуацию, что у нас есть сценарий (function.vbs), в котором прописана функция, что бы ее не копировать в тело сценария windows script file, мы можем просто увказать ссылку на function.vbs и так вызвать функцию. Файл function.vbs будет содержать следующий код:

Function WSHInputBox(Message, Title, Value)WSHInputBox = InputBox(Message, Title, Value)EndFunction

А в наш ws-файл (function.wsf) пропишем следующее:

<!--*****************************файл wsfunction.wsf*****************************--><jobid="T1"><scriptlanguage="VBScript"src="function.vbs"/><scriptlanguage="JScript">var title = "Функция InputBox";var prompt = "Введите любой текст:";// Открыть диалоговое окно ввода с помощью функции, определенной в function.vbsvar result = WSHInputBox(prompt, title, "Ваш текст");// Проверить, не щелкнул ли пользователь кнопку Cancel,if (result != null) {// Получить введенную информацию.WScript.Echo("Вы ввели: " + result);}else{// Пользователь щелкнул кнопку Cancel.WScript.Echo("Вы нажали Отмена");}</script></job>

Тут мы с начало подключаем файл function.vbs, в нем прописана функция WSHInputBox, которая в свою очередь вызывает функцию InputBox (поддерживается только в языке VBScript). Сделав такое преобразование, мы смогли вызвать в теле js кода функцию языка vbscript.

Способы обработки ws-файлов

Те примеры что были выше, содержат нестрогий синтаксис языка XML — не предполагается выполнение всех требований стандарта XML (регистр символов, заключение атрибутов в двойные кавычки.)

Скачать архив с примерами

Однако, если windows script file станет обрастать зарезервированными для XML символами или словами как разметки XML, то произойдет сбой. В  таком случае стоит применять строгую разметку. Для того чтобы задать режим строгой обработки сценария, нужно поместить элемент <?xml?> в самой первой строке сценария — никаких других символов или пустых строк перед ним быть не должно. При такой обработке WS-файла нужно четко следовать всем правилам стандарта XML. Код сценария должен быть помещен в секцию CDATA, которая начинается с символов «<![CDATA[» и заканчивается символами «]]>». Например:

<?xmlversion="1.0"encoding="ISO-8859-1"?><!--файл ws--><!-- xml.wsf--><jobid="T1"><scriptlanguage="VBScript"><![CDATA[WScript.Echo "Hello"]]></script></job>

Хорошо, на этом пока все, остальные возможности сценариев windows script file (файлов ws ) я опишу в остальных постах, а то статья и так довольно громоздкая получилась.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий