是含有可擴(kuò)展標(biāo)記語言 (XML) 代碼的文本文檔。它綜合了幾個(gè)可增強(qiáng)腳本靈活性的功能。由于 Windows 腳本文件不是特定于引擎的,因此它們可包含與 Windows 腳本兼容的任何腳本引擎中的腳本。它們充當(dāng)容器。
使用 .wsf 文件,可以在創(chuàng)建腳本時(shí)使用以下功能:
.wsf 文件支持 實(shí)現(xiàn)
Include 語句 將函數(shù)從 VBScript 或 JScript 文件合并到 Windows 腳本宿主項(xiàng)目中。
多引擎 每個(gè)文件使用多種腳本語言。
類型庫 將常數(shù)添加到代碼中。
工具 使用任何 XML 編輯器編輯文件。
一個(gè)文件中的多項(xiàng)作業(yè) 將所有的代碼存儲(chǔ)在一個(gè)位置。
Include 語句
如果您的 .js 和 .vbs 文件來自以前版本的 Windows 腳本宿主項(xiàng)目,則 .wsf 文件允許您將它們用于 Windows 腳本宿主。.wsf 文件封裝了一個(gè)可以被多個(gè) .wsf 文件使用的函數(shù)庫。
下面的示例顯示包含 JScript 文件 (fso.js) 的.wsf 文件,以及在包含文件中調(diào)用函數(shù) ("GetFreeSpace") 的 VBScript 函數(shù)。還顯示 fso.js 的內(nèi)容。
<job id="IncludeExample"> <script language="JScript" src="FSO.JS"/> <script language="VBScript"> ' 獲得驅(qū)動(dòng)器 C 的可用空間。 s = GetFreeSpace("c:") WScript.Echo s <sScript></job>
fso.js 文件包含以下內(nèi)容:
function GetFreeSpace(drvPath) { var fs, d, s; fs = new ActiveXObject("Scripting.FileSystemObject"); d = fs.GetDrive(fs.GetDriveName(drvPath)); s = "Drive " + drvPath + " - " ; s += d.VolumeName; s += " Free Space: " + d.FreeSpace/1024 + " Kbytes"; return s;}
多引擎支持
由于一種腳本語言不能涵蓋用戶需要的所有功能,因此 Windows 腳本宿主為您提供了可以在一個(gè) .wsf 文件中結(jié)合使用多種語言的功能。下面的示例顯示了同時(shí)包含 VBScript 和 PerlScript 代碼的 .wsf 文件:
<job id="PERLandVBS"><script language="PerlScript">sub PerlHello {my $str = @_[0];$WScript->Echo($str); }</script><script language="VBScript">WScript.Echo "Hello from VBScript"PerlHello "Hello from PERLScript"</script></job>
類型庫支持
在下面的示例中,"MyComponent" 是用 Microsoft Visual Basic 5.0 開發(fā)的。"MyComponent" 用以下語句定義了常數(shù) MyError。
Public Const MyError = "You are not using MyComponent correctly"
類型庫包含在安裝于 C:\MyComponent 下的 mycomponent.lib 中。
<job id="IncludeExample"><reference progid="MyComponent.MyClass"><script language="VBScript">Dim MyVarSet MyVar = CreateObject("MyComponent.MyClass")Currentreturn = MyVar.MyMethodIf Currentreturn = False thenWScript.Echo MyErrorEnd If</script></job>
工具支持
由于 .wsf 文件采用 XML 格式,所以可以使用支持 XML 的任意編輯器來編輯 .wsf 文件。其中包括文本編輯器,如“記事本”。
一個(gè)文件中的多項(xiàng)作業(yè)
CScript //Job:MyFirstJob MyScripts.wsf
不用將所有腳本分別保留在不同的文件中,可以將它們合并到一個(gè).wsf 文件中,并分解成幾個(gè)不同的作業(yè)。然后用與下例相似的語法分別運(yùn)行各個(gè)作業(yè),該示例中的 "MyFirstJob" 是 MyScripts.wsf 文件中包含的作業(yè)名稱。
WScript.exe 和 CScript.exe 選項(xiàng)
cscript因?yàn)榘演敵龇胚M(jìn)了控制臺(tái) 所以可以對(duì)它重定向 方便程序調(diào)用
wscript直接用窗口輸出 適合調(diào)試程序和編寫小工具 在windows下不用cmd的話cscript的輸出會(huì)一閃而過 大多數(shù)情況下,列在下表中的選項(xiàng)適用于 WScript.exe 和 CScript.exe。例外情況會(huì)加以注釋。
參數(shù) 說明
//B 批處理模式;隱藏用戶提示和腳本錯(cuò)誤在命令行中的顯示。默認(rèn)模式是交互模式。
//D 打開調(diào)試程序。
//E:engine 用指定的腳本引擎執(zhí)行腳本。
//H:CScript 或 //H:Wscript 將 CScript.exe 或 WScript.exe 注冊(cè)為運(yùn)行腳本的默認(rèn)應(yīng)用程序。如果未指定,則將 WScript.exe 假設(shè)為默認(rèn)應(yīng)用程序。
//I 默認(rèn)。交互模式;允許顯示用戶提示和腳本錯(cuò)誤。與批處理模式相反。
//Job:<JobID> 從 .wsf 文件運(yùn)行指定的 JobID。
//logo 默認(rèn)。顯示標(biāo)題。與 nologo 相反。
//nologo 防止在運(yùn)行時(shí)顯示執(zhí)行標(biāo)題。默認(rèn)設(shè)置是 logo。
//S 保存該用戶的當(dāng)前命令行選項(xiàng)。
//T:nn 啟用超時(shí):腳本可以運(yùn)行的最大秒數(shù)。默認(rèn)設(shè)置是無限制。//T 參數(shù)通過設(shè)置定時(shí)器來防止腳本執(zhí)行過度。當(dāng)執(zhí)行時(shí)間超過指定值時(shí),CScript 用 IActiveScript::InterruptThread 方法中斷腳本引擎,并終止過程。
//U 用于 Windows NT 和 Windows 2000,強(qiáng)制命令行以 Unicode 格式輸出。CScript 無法決定以 Unicode 還是以 ANSI 輸出;默認(rèn)設(shè)置為 ANSI。
//X 在調(diào)試程序中啟動(dòng)該程序。