Hvad er WSF fil?
En WSF-fil er et script, der falder ind under den eksekverbare kategori og almindeligvis brugt i Microsoft Windows. Scriptet understøtter blanding af flere sprog, det betyder, at WSF-filen kan indeholde en blanding af JScript, VBScript og eventuelt nogle XML-elementer eller andre scriptsprog såsom Python, Object REXX, Perl, Kixtart, hvis det er installeret af brugeren. WSF-filerne kører sig selv i fravær af WScript eller CScript. WSF-filerne kan være gavnlige til fejlisolering og eksponering af konstanter.
WSF filformat
WSF-filformatet kan blande JScript og VBScript fra dine tidligere Windows Script Host-projekter, en .wsf-fil giver dig mulighed for at bruge dem med Windows Script Host. Et WSF-script indkapsler et bibliotek af funktioner, der kan bruges af forskellige WSF-filer. Eksemplet nedenfor viser en .wsf-fil, der indeholder en JScript-fil (fso.js), plus en VBScript-funktion, der kalder en anden funktion.
<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-format understøtter følgende yderligere funktioner:
- Medtag udsagn
- Flere motorer
- Type biblioteker
- Værktøjer
- Flere job i én fil
Fordele ved WSF-filer
WSF-filerne kan være gavnlige på følgende områder:
Fejlisolering
Den modulære karakter af WSF-fil kan forhindre en scriptreference i at forstyrre en anden, hvilket gør WSF nyttig til at isolere fejl. Her er et eksempel på WSF med et modul, der producerer en fejl og et, der ikke gør:
<?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>
Understøttelse af blandet sprog
En WSF understøtter flere sprog, du kan få et scriptsprog til at bruge kode fra et andet scriptsprog. 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>
Eksponering af konstanter
WSF understøtter bindingen af en XML-indpakning til en objektreference eller kontrol, så du kan bruge objektets konstanter i stedet for at skulle 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>