Файл сценария Windows
Расширение имени файла | .wsf |
---|---|
Тип интернет-СМИ | текст/xml |
Разработано | Майкрософт |
Тип формата | Сценарии |
Контейнер для | Скрипты |
Файл сценария Windows ( WSF ) — это тип файла, используемый хостом сценариев Microsoft Windows . Он позволяет смешивать языки сценариев JScript и VBScript в одном файле или другие языки сценариев, такие как Perl , Object REXX , Python или Kixtart , если они установлены пользователем. Эти типы сценариев также можно использовать для связывания множества других внешних сценариев с помощью src
параметр на <script>
тег аналогично HTML . Файлы сценариев Windows имеют расширение ".WSF"
. WSF ссылается на каждый модуль сценария в очень простой иерархии XML , как показано ниже, придерживаясь этих стандартов за пределами <script>
теги. Буквальное использование " </script>
" или " <script>
"Внутри твоего <script>
теги и подобные проблемы можно решить с помощью CDATA , как показано в примерах.
Изоляция ошибок
[ редактировать ]WSF может быть полезен для изоляции ошибок. Его модульная природа предотвращает взаимодействие одной ссылки сценария с другой. Вот пример WSF с одним модулем, который выдает ошибку, а другой нет:
<?xml version="1.0" ?>
<job id="Partially works">
<!-- This will not work -->
<script language="VBScript">
' <![CDATA[
WScript.echo 4/0 ' Oh, boy! You cannot divide by zero...
' ]]>
</script>
<!-- This will work... definitely... -->
<script language="VBScript">
' <![CDATA[
WScript.echo "Hello, Scripters!" & vbNewline & _
"Fantastic! It worked!"
' ]]>
</script>
</job>
Первый модуль сценария выдаст ошибку «деление на ноль». Обычно это приводит к завершению выполнения сценария на узле сценариев Windows , но этот модульный метод позволяет сценарию продолжить работу и выполнить второй модуль сценария.
Смешанная языковая поддержка
[ редактировать ]Файл сценариев Windows поддерживает несколько языков, как описано в справочнике по хосту сценариев Windows . Одной из особенностей этого формата файлов является то, что вы можете использовать более одного файла одновременно. Это означает, что один язык сценариев может использовать код другого языка сценариев. Самым запоминающимся примером для давних пользователей VBScript является использование Microsoft JScript для обслуживания запроса на сортировку для VBScript , поскольку он не имеет встроенной функции сортировки для массива значений. Пользователи VBScript могут написать свой собственный метод сортировки или заимствовать его из существующего объекта, такого как ADO ( объекты данных ActiveX ) набор записей .NET ( .NET Framework ) или ArrayList , но самый быстрый способ сортировки массива — использовать метод, встроенный в JScript . Вот базовый пример того, как это работает:
<?xml version="1.0" ?>
<!-- Mixing JScript and VBScript -->
<job id="SORT-VBScriptWithJScript">
<script language="JScript">
function SortVBArray(arrVBArray) {return arrVBArray.toArray().sort();}
</script>
<script language="VBScript">
' <![CDATA[
'** Fastest sort: call the Jscript sort from VBScript
myData = "a,b,c,1,2,3,X,Y,Z,p,d,q"
wscript.echo "Original List of values: " & vbTab & myData
starttime = timer()
sortedArray = SortVBArray(split(myData,","))
endtime=timer()
jscriptTime = round(endtime-starttime,2)
wscript.echo "JScript sorted in " & jscriptTime & " seconds: " & vbTab & sortedArray
' ]]>
</script>
</job>
Вывод выглядит следующим образом, отсортированный по ASCII последовательности кода :
Original List of values: a,b,c,1,2,3,X,Y,Z,p,d,q
JScript sorted in 0 seconds: 1,2,3,X,Y,Z,a,b,c,d,p,q
Раскрытие констант
[ редактировать ]Еще одна очень полезная особенность WSF заключается в том, что оболочка XML может быть привязана к ссылке на объект или элементу управления, поэтому вы можете использовать константы этого объекта вместо того, чтобы объявлять их. В обычных файлах VBScript и JScript вам придется объявить значение константы (кроме тех, которые являются внутренними для узла сценариев Windows ), чтобы использовать константу. Пример этого показан ниже:
const adLockBatchOptimistic = 4
MsgBox "The value of ""adLockBatchOptimistic"" is " & _
adLockBatchOptimistic & ".", vbInformation,"adLockBatchOptimistic"
Если в вашей документации по объекту упоминается только имя константы, а не ее значение, у вас не будет возможности узнать значение без помощи интегрированной среды разработки, которая сообщит вам, чему они соответствуют. Используя справочное объявление WSF, вы можете использовать константы, не объявляя их значения. В приведенном ниже примере перечислены значения нескольких общих констант в ADO ( объекты данных ActiveX ) наборе записей .
<?xml version="1.0" ?>
<!-- WSF Example with Object Reference
Notes for this very formal example:
CDATA is used to help the XML parser ignore
special characters in the content of the script.
The CDATA open and close must be masked
from VBScript by making them comments.
-->
<package>
<job id="EnumerateConstantsADO">
<reference object="ADODB.Recordset" />
<script language="VBScript">
' <![CDATA[
dim title, str, i
ctecArray = Array("adOpenUnspecified","adOpenForwardOnly", _
"adOpenKeyset","adOpenDynamic","adOpenStatic")
title = "ADO Recordset Values for Constants"
str = title & vbNewLine & vbNewLine
str = str & "*CursorTypeEnum Constants*" & vbNewLine
For i = 0 to ubound(ctecArray)
str = str & Eval(ctecArray(i)) & vbTab & ctecArray(i) & vbNewLine
Next
str = str & vbNewLine
str = str & "*LockTypeEnum Constants*" & vbNewLine
ltecArray = Array("adLockUnspecified","adLockReadOnly", _
"adLockPessimistic","adLockOptimistic", _
"adLockBatchOptimistic")
For i = 0 to ubound(ltecArray)
str = str & Eval(ltecArray(i)) & vbTab & ltecArray(i) & vbNewLine
Next
MsgBox str, vbInformation, Title
' ]]>
</script>
</job>
</package>
Запуск приведенного выше сценария из файла с ".WSF"
расширение, например, с именем "EnumerateConstantsADO.wsf"
, даст результат, показанный ниже:
ADO Recordset Values for Constants
*CursorTypeEnum Constants*
-1 adOpenUnspecified
0 adOpenForwardOnly
1 adOpenKeyset
2 adOpenDynamic
3 adOpenStatic
*LockTypeEnum Constants*
-1 adLockUnspecified
1 adLockReadOnly
2 adLockPessimistic
3 adLockOptimistic
4 adLockBatchOptimistic
Кроме того, использование ссылки на объект для предоставления констант делает написание сценария более похожим на написание стандартного языка программирования. Фактически, содержимое примера сценария, написанного на VBScript, фактически скомпилируется в программу Visual Basic и будет работать таким же образом, пока эта программа использует ту же ссылку на ADODB.
См. также
[ редактировать ]Внешние ссылки
[ редактировать ]- Использование файлов сценариев Windows — из архива The WayBack Machine со страницы Microsoft . веб-сайта
- Языки сценариев, доступные в Центре сценариев — из архива The WayBack Machine, страница с Microsoft . веб-сайта