使用 Windows 脚本文件

Windows 脚本 (.wsf) 文件是一个包含可扩展标记语言(XML)代码的文本文档,它结合了若干功能,提高了脚本编程的灵活性。由于 Windows 脚本文件并不局限于特定的引擎,它们能够包含所有遵循 ActiveX(R)规范的脚本引擎的脚本。

使用 .wsf 文件,在创建脚本时可以利用其下列优点:

Include 语句

如果您在前面的 Windows 脚本宿主项目中已经建立了一些 .js 和 .vbs 文件,可以利用.wsf 文件使这些文件在Windows 脚本宿主中继续得以应用。一个 .wsf 文件可以封装一个函数库,而这些函数可以被多个 .wsf 文件使用。

下面的例子显示了一个 .wsf 文件,其中包含了一个 JScript 文件和一个 VBScript 函数,后者可调用由JScript文件所提供的(GetFreeSpace)函数。下面还提供了 fso.js 的内容。

<Job id="IncludeExample">
<script language="JScript" src="FSO.JS"/>
<script language="VBScript">
   ' 获取驱动器 C: 上的自由空间。
   s = GetFreeSpace("c:")
   WScript.Echo s
</Script>
</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 文件中结合多种语言。下面的例子显示了一个 .wsf 文件,其中具有 VBScript(R)和 PerlScript 代码:

<job id="PERLandVBS">
<script language=PerlScript RUNAT=Server>
   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(R)Visual Basic(R)5.0 开发的。 MyComponent 使用以下语句定义常量 MyError

Public Const MyError = "您使用 MyComponent 的方法不正确。"

类型库被包含在安装于 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 文件进行编辑。此外还可以使用任何文本编辑器,例如 Notepad。

在一个文件中包含多项任务

如果有多个脚本,可以将其集中到一个 .wsf 文件中,分隔为多个任务,而不必将每个脚本保存在单独的文件中。然后,可以使用与下例类似的语法分别运行每一项任务,其中MyFirstJob 是 MyScripts.wsf 文件中包含的任务的名字:

CScript //Job:MyFirstJob MyScripts.wsf