Τι είναι ένα αρχείο WSF;
Ένα αρχείο WSF είναι ένα σενάριο που εμπίπτει στην κατηγορία εκτελέσιμων αρχείων και χρησιμοποιείται συνήθως στα Microsoft Windows. Το σενάριο υποστηρίζει τη μίξη πολλών γλωσσών, αυτό σημαίνει ότι στο αρχείο WSF μπορεί να περιλαμβάνει ένα μείγμα JScript, VBScript και προαιρετικά ορισμένα στοιχεία XML ή άλλες γλώσσες δέσμης ενεργειών όπως Python, Object REXX, Perl, Kixtart, εάν εγκατασταθεί από τον χρήστη. Τα αρχεία WSF εκτελούνται μόνα τους απουσία WScript ή CScript. Τα αρχεία WSF μπορούν να είναι ωφέλιμα στην απομόνωση σφαλμάτων και στην έκθεση σταθερών.
Μορφή αρχείου WSF
Η μορφή αρχείου WSF μπορεί να συνδυάσει το JScript και το VBScript από τα προηγούμενα έργα σας Windows Script Host, ένα αρχείο .wsf σας επιτρέπει να τα χρησιμοποιήσετε με το Windows Script Host. Ένα σενάριο WSF ενσωματώνει μια βιβλιοθήκη συναρτήσεων που μπορούν να χρησιμοποιηθούν από διάφορα αρχεία WSF. Το παρακάτω παράδειγμα δείχνει ένα αρχείο .wsf που περιλαμβάνει ένα αρχείο JScript (fso.js), συν μια συνάρτηση VBScript που καλεί μια άλλη συνάρτηση.
<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 υποστηρίζει τις ακόλουθες πρόσθετες δυνατότητες:
- Συμπεριλάβετε δηλώσεις
- Πολλαπλοί κινητήρες
- Πληκτρολογήστε βιβλιοθήκες
- Εργαλεία
- Πολλαπλές εργασίες σε ένα αρχείο
Πλεονεκτήματα των αρχείων WSF
Τα αρχεία WSF μπορούν να είναι ωφέλιμα στους ακόλουθους τομείς:
Απομόνωση σφάλματος
Η αρθρωτή φύση του αρχείου WSF μπορεί να αποτρέψει την παρεμβολή μιας αναφοράς σεναρίου με μια άλλη, γεγονός που καθιστά το 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>
Υποστήριξη μεικτών γλωσσών
Ένα WSF υποστηρίζει πολλές γλώσσες, μπορείτε να έχετε έναν κώδικα χρήσης γλώσσας δέσμης ενεργειών από άλλη γλώσσα δέσμης ενεργειών. Ακολουθεί ένα παράδειγμα για το πώς λειτουργεί:
<?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>
Έκθεση σταθερών
Το WSF υποστηρίζει τη σύνδεση ενός περιτυλίγματος XML σε μια αναφορά αντικειμένου ή στοιχείο ελέγχου, ώστε να μπορείτε να χρησιμοποιήσετε τις σταθερές αυτού του αντικειμένου αντί να χρειάζεται να τις δηλώσετε. Ακολουθεί ένα παράδειγμα:
<?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>