Jump to content

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

Файл сценария 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.

См. также

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: bb5a9479e5682121bc9d17aade6ad532__1698503160
URL1:https://arc.ask3.ru/arc/aa/bb/32/bb5a9479e5682121bc9d17aade6ad532.html
Заголовок, (Title) документа по адресу, URL1:
Windows Script File - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)