Windows 脚本文件 (*.wsf) 是含有可扩展标记语言 (XML) 代码的文本文档。它综合了几个可增强脚本灵活性的功能。由于 Windows 脚本文件不是特定于引擎的,因此它们可包含与 Windows 脚本兼容的任何脚本引擎中的脚本。它们充当容器。
使用 .wsf 文件,可以在创建脚本时使用以下功能:
.wsf 文件支持 | 实现 |
---|---|
Include 语句 | 将函数从 VBScript 或 JScript 文件合并到 Windows 脚本宿主项目中。 |
多引擎 | 每个文件使用多种脚本语言。 |
类型库 | 将常数添加到代码中。 |
工具 | 使用任何 XML 编辑器编辑文件。 |
一个文件中的多项作业 | 将所有的代码存储在一个位置。 |
如果您的 .js 和 .vbs 文件来自以前版本的 Windows 脚本宿主项目,则 .wsf 文件允许您将它们用于 Windows 脚本宿主。.wsf 文件封装了一个可以被多个 .wsf 文件使用的函数库。
下面的示例显示包含 JScript 文件 (fso.js) 的.wsf 文件,以及在包含文件中调用函数 ("GetFreeSpace") 的 VBScript 函数。还显示 fso.js 的内容。
<job id="IncludeExample"> <script language="JScript" src="FSO.JS"/> <script language="VBScript"> ' 获得驱动器 C 的可用空间。 s = GetFreeSpace("c:") WScript.Echo s <sScript> </job>
fso.js 文件包含以下内容:
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 脚本宿主为您提供了可以在一个 .wsf 文件中结合使用多种语言的功能。下面的示例显示了同时包含 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 开发的。"MyComponent" 用以下语句定义了常数 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 MyVar Set MyVar = CreateObject("MyComponent.MyClass") Currentreturn = MyVar.MyMethod If Currentreturn = False then WScript.Echo MyError End If </script> </job>
由于 .wsf 文件采用 XML 格式,所以可以使用支持 XML 的任意编辑器来编辑 .wsf 文件。其中包括文本编辑器,如“记事本”。
不用将所有脚本分别保留在不同的文件中,可以将它们合并到一个.wsf 文件中,并分解成几个不同的作业。然后用与下例相似的语法分别运行各个作业,该示例中的 "MyFirstJob" 是 MyScripts.wsf 文件中包含的作业名称。
CScript //Job:MyFirstJob MyScripts.wsf