тегов. Буквальное использование " " или "
stringtranslate.com

Файл сценария Windows

Файл сценария 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= "Частично работает" > <!-- Это не сработает --> <script Language= "VBScript" > ' <![CDATA[ WScript . эхо 4/0 ' Ох, боже ! Делить на ноль нельзя... ' ]]> </script> <!-- Это сработает... определенно... --> <script Language= "VBScript" > ' <![CDATA[ WScript . echo "Привет, сценаристы!" & vbNewline & _ "Фантастика! Это сработало!" ' ]]> </script> </job>                     

Первый модуль сценария выдаст ошибку «деление на ноль». Обычно это приводит к завершению выполнения сценария на узле сценариев Windows , но этот модульный метод позволяет сценарию продолжить работу и выполнить второй модуль сценария.

Смешанная языковая поддержка

Файл сценариев Windows поддерживает несколько языков, как описано в справочнике по хосту сценариев Windows . Одной из особенностей этого формата файлов является то, что вы можете использовать более одного файла одновременно. Это означает, что один язык сценариев может использовать код другого языка сценариев. Самым запоминающимся примером для давних пользователей VBScript является использование Microsoft JScript для обслуживания запроса на сортировку для VBScript , поскольку он не имеет встроенной функции сортировки для массива значений. Пользователи VBScript могут написать свой собственный метод сортировки или заимствовать его из существующего объекта, такого как набор записей ADO ( объекты данных ActiveX ) или ArrayList .NET ( .NET Framework ) , но самый быстрый способ сортировки массива — использовать метод, встроенный в JScript . Вот базовый пример того, как это работает:

<?xml version="1.0" ?> <!-- Смешение JScript и VBScript --> <job id= "SORT-VBScriptWithJScript" > <script Language= "JScript" > function SortVBArray ( arrVBArray ) { return arrVBArray . toArray (). Сортировать () ; } </script> <script Language= "VBScript" > ' <![CDATA[ '** Самая быстрая сортировка: вызвать сортировку Jscript из VBScript myData = "a,b,c,1,2,3,X,Y, Z,p,d,q" wscript . echo "Исходный список значений: " & vbTab & myData starttime = timer () sortedArray = SortVBArray ( split ( myData , "," )) endtime = timer () jscriptTime = round ( endtime - starttime , 2 ) wscript . echo "JScript отсортирован в " & jscriptTime & " секундах: " & vbTab & sortedArray ' ]]> </script> </job>                                           

Вывод выглядит следующим образом, отсортированный по последовательности кода ASCII :

Исходный список значений: a,b,c,1,2,3,X,Y,Z,p,d,q JScript, отсортированный за 0 секунд: 1,2,3,X,Y,Z,a,b, в,г,п,к

Раскрытие констант

Еще одна очень полезная особенность WSF заключается в том, что оболочка XML может быть привязана к ссылке на объект или элементу управления, поэтому вы можете использовать константы этого объекта вместо того, чтобы объявлять их. В обычных файлах VBScript и JScript вам придется объявить значение константы (кроме тех, которые являются внутренними для узла сценариев Windows ), чтобы использовать константу. Пример этого показан ниже:

const adLockBatchOptimistic = 4 MsgBox "Значение ""adLockBatchOptimistic"" равно " & _ adLockBatchOptimistic & "." , vbInformation , "adLockBatchOptimistic"          

Если в вашей документации по объекту упоминается только имя константы, а не ее значение, у вас не будет возможности узнать значение без помощи интегрированной среды разработки, которая сообщит вам, чему они соответствуют. Используя справочное объявление WSF, вы можете использовать константы, не объявляя их значения. В приведенном ниже примере перечислены значения нескольких общих констант в наборе записей ADO ( объекты данных ActiveX ) .

<?xml version="1.0" ?> <!-- Пример WSF со ссылкой на объект Примечания для этого очень формального примера: CDATA используется, чтобы помочь анализатору XML игнорировать специальные символы в содержимом сценария. Открытие и закрытие CDATA необходимо замаскировать из VBScript, добавив к ним комментарии. --> <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 для констант" str = title & vbNewLine & vbNewLine str = str & "*CursorTypeEnum Constants*" & vbNewLine For i = от 0 до 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" ,                                                                                             </script> </job> </package> 

Запуск приведенного выше сценария из файла с ".WSF"расширением, например с именем "EnumerateConstantsADO.wsf", приведет к результату, показанному ниже:

Значения набора записей ADO для констант*Константы CursorTypeEnum* -1 adOpenUnspecified 0 adOpenForwardOnly 1 adOpenKeyset 2 adOpenDynamic 3 adOpenStatic*Константы LockTypeEnum* -1 adLockUnspecified 1 adLockReadOnly 2 adLockPessimistic 3 adLockOptimistic 4 adLockBatchOptimistic

Кроме того, использование ссылки на объект для предоставления констант делает написание сценария более похожим на написание стандартного языка программирования. Фактически, содержимое примера сценария, написанного на VBScript, фактически скомпилируется в программу Visual Basic и будет работать таким же образом, пока эта программа использует ту же ссылку на ADODB.

Смотрите также

Внешние ссылки