File Format Docs
NO

WSF - Windows Script File

Oppdatert

Hva er en WSF-fil?

En WSF-fil er et skript som faller under kategorien kjørbare og ofte brukt i Microsoft Windows. Skriptet støtter blanding av flere språk, det betyr at en WSF-fil kan inkludere en blanding av JScript, VBScript og eventuelt noen XML-elementer eller andre skriptspråk som Python, Object REXX, Perl, Kixtart hvis installert av brukeren. WSF-filene kjører seg selv i fravær av WScript eller CScript. WSF-filene kan være fordelaktige i feilisolering og eksponering av konstanter.

WSF-filformat

WSF-filformatet kan blande JScript og VBScript fra dine tidligere Windows Script Host-prosjekter, en .wsf-fil lar deg bruke dem med Windows Script Host. Et WSF-skript innkapsler et bibliotek med funksjoner som kan brukes av ulike WSF-filer. Eksemplet nedenfor viser en .wsf-fil som inkluderer en JScript-fil (fso.js), pluss en VBScript-funksjon som kaller en annen funksjon.

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

WSF-formatet støtter følgende tilleggsfunksjoner:

  • Ta med utsagn
  • Flere motorer
  • Type biblioteker
  • Verktøy
  • Flere jobber i én fil

Fordeler med WSF-filer

WSF-filene kan være nyttige på følgende områder:

Feilisolering

Den modulære naturen til WSF-filen kan forhindre at en skriptreferanse forstyrrer en annen, noe som gjør WSF nyttig for å isolere feil. Her er et eksempel på WSF med en modul som produserer en feil og en som ikke gjør det:

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

Mixed language support

En WSF støtter flere språk, du kan ha ett skriptspråk som bruker kode fra et annet skriptspråk. Her er et eksempel på hvordan det fungerer:

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

Exposing constants

WSF støtter bindingen av en XML-innpakning til en objektreferanse eller kontroll, slik at du kan bruke objektets konstanter i stedet for å måtte erklære dem. Følgende er et eksempel:

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

Referanser

Se også