aspose.info
PL

WSF - plik skryptu systemu Windows

Zaktualizowano

Czym jest plik WFS?

Plik WSF to skrypt należący do kategorii plików wykonywalnych i powszechnie używany w systemie Microsoft Windows. Skrypt obsługuje mieszanie wielu języków, co oznacza, że plik WSF może zawierać mieszankę JScript, VBScript i opcjonalnie niektóre elementy XML lub inne języki skryptowe, takie jak Python, Object REXX, Perl, Kixtart, jeśli zostały zainstalowane przez użytkownika. Pliki WSF wykonują się same przy braku WScript lub CScript. Pliki WSF mogą być przydatne w izolacji błędów i ujawnianiu stałych.

Format pliku WSF

Format pliku WSF może łączyć skrypty JScript i VBScript z poprzednich projektów hosta skryptów systemu Windows, a plik .wsf umożliwia ich używanie z hostem skryptów systemu Windows. Skrypt WSF zawiera bibliotekę funkcji, które mogą być używane przez różne pliki WSF. Poniższy przykład pokazuje plik .wsf, który zawiera plik JScript (fso.js) oraz funkcję VBScript, która wywołuje inną funkcję.

<job id="IncludeExample">
   <script language="JScript" src="FSO.JS"/>
   <script language="VBScript">
      ' Get the free space for drive C.
      s = GetFreeSpace("c:")
      WScript.Echo s
   <script>
</job>

Format WSF obsługuje następujące dodatkowe funkcje:

  • Dołącz oświadczenia
  • Wiele silników
  • Biblioteki typów
  • Narzędzia
  • Wiele zadań w jednym pliku

Korzyści z plików WSF

Pliki WSF mogą być korzystne w następujących obszarach:

Izolacja błędów

Modułowy charakter pliku WSF może zapobiegać zakłóceniom jednego skryptu z innym, co sprawia, że WSF jest przydatny do izolowania błędów. Oto przykład WSF z jednym modułem, który generuje błąd, i jednym, który nie:

<?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>

Obsługa różnych języków

WSF obsługuje wiele języków, możesz mieć jeden język skryptowy używający kodu z innego języka skryptowego. Oto przykład, jak to działa:

<?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>

Ujawnianie stałych

WSF obsługuje powiązanie opakowania XML z odwołaniem do obiektu lub kontrolką, dzięki czemu można używać stałych tego obiektu zamiast konieczności ich deklarowania. Oto przykład:

<?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>

Bibliografia

Zobacz też