admin 管理员组

文章数量: 887021


2023年12月18日发(作者:insert into doing)

1. 第1章 Windows Script Host简介

在Windows 98之前的Microsoft Windows版本几乎不提供自动化的协助,例如备份文件或执行例行的系统管理工作。您当然可以在 MS-DOS模式 窗口中使用旧的MS-DOS批处理文件(BAT)来完成某些工作,例如复制档案。但是批处理文件只能够执行一连串简单的MS-DOS指令(其缺点包括了只有简单的条件分支和没有实际的循环功能等),并且也不支持对话盒和讯息盒。在Windows 3.1里面,您可以透过Macro Recorder来记录并执行简单的击键和鼠标点按的动作,但他无法用来撰写程序。

使用者为了寻求较有效率的方式来处理这些自动化的工作而找上了第三方所提供的解决方案,例如PowerBatch或者像是Delphi、Microsoft Visual Basis和Visual C++这类的程序开发环境。但是许多Windows的使用者很快地发现这些解决方案不合己意,因为他们既不简单易用也不是免费的。

因为Microsoft Office提供VBA(Visual Basic for Applications),以及因为网站的作者们都知道像是VBScript(Microsoft Visual Basic的描述语言版本)和网景的JavaScript这类的描述语言(Scripting Language),所以在Microsoft为Windows操作系统提供Script程序设计工具之前,这只不过是个时间早晚的问题罢了。而这个工具正是Microsoft的Windows Script Host(WSH),属于Microsoft Windows Script技术的分支。

WSH是一种能够让您直接在操作系统层级执行Script档案的独立主机(Host)。举例来说,您可以从命令行接口叫用Script或者在 档案总管

中双击Script。WSH对于许多需要很少或者根本不需要接口的管理工作来说是相当便利的。他远比旧的MS-DOS批处理文件好用,因为JScript和VBScript都是功能十分强大的描述语言,他们对于WSH对象和任何其他有效的自动化对象(Automation Object)都有完整的存取功能。

说明

在第2版之前,「Windows Script Host」称为「Windows Scripting Host」。在本书中,将使用WSH来泛指这两个版本。

您能够用WSH Script来做什么

您可以在许多方面使用Script来自定义您的Windows系统。这里有一些您能够使用Script来自动化的工作:

 备份或复原您系统中的档案。(如果您只是需要从您的机器上储存一些档案到网络服务器中的话,这种能力就显得特别方便。)

 藉由鼠标点按来关机或重新启动Windows。您也可以使用Script来新增特别的关机或开机工作,例如在关闭应用程序后备份某些档案或是在开机完毕后记录用户的名称。(在Windows 95和Windows

98中这种透过Script来记录信息的能力尤其有用;而在Windows NT和Windows 2000中,许多这

类的功能都是内建的。)

 整合应用程序与其数据。举例来说,Script可以启动Office应用程序、加载并处理文件、打印、以及关闭应用程序。以这种方式使用Script,您可以用任何您所选择的应用程序来「链接」文件。

 管理系统所管理的工作,比如说在Windows NT和Windows 2000中新增、更新或移除使用者的账号。您可藉由使用利用到Windows NT和Windows 2000中所提供的主动式目录服务接口(Active

Directory Service Interface,ADSI)的WSH Script来自动化这些工作。

 透过适当的对象直接存取Windows的Shell以建立快捷方式(Shortcut)或者映像(Map)如磁盘驱动器和打印机之类的网络装置。

 读取环境变量(Environment Variable)或是取得有关Windows的信息。

 启动程序并且控制自动化对象。

 显示通知用户关于程序的状态或者读取用户输入的对话盒。

 存取Windows的Shell和Windows的应用程序编程接口(Application Programming Interface,API)来控制Windows和其他应用程序。

有关VBScript和JScript的补充说明

与Windows 98和Windows 2000一起发布(以及供Windows 95和Windows NT 4使用的可下载版本)的WSH,都有内附VBScript和JScript这两种程序语言。VBScript使用和Visual Basic一样的语法,他实际上就是Visual Basic的一个子集合。而JScript则是Microsoft根据ECMAScript标准(ECMA为「欧洲计算机制造商协会」的缩写)实作的一种建构在JavaScript基础之上且与开发厂商无关(Vendor-Independent)的程序语言。

这两种程序语言都是您进入Script程序设计世界中的必备品。但是,Microsoft为WSH设计了一个开放的接口以便第三方能够整合他们自己的语言引擎(Language Engine)来支持其他的语言,例如Perl、Tcl(Tool Control Language)、Rexx等。

升级到WSH 2

WSH 1首先是跟着Windows NT 4 Option Pack一起发布的。WSH同时也是Windows 98的一部份,但是他并不会主动安装到您的机器上,您必须将其当作是附加的Windows组件来安装他。而

WSH 2已整合到Windows 2000系统上,所以如果您使用的是Windows 2000的话,您将不需要再去安装他。

要检查您的系统中是否已经安装好WSH,您可以简单地浏览一下包含.js、 .vbs和.wsf档案的文件夹(例如使用 档案总管

)。如果显示这些档案的图标(icon)与图1-1相同的话,即表示WSH 2已经安装好。如果说.wsf的图标显示的是「未知的文件」类型,则表示WSH 1已经安装过了。如果全部的图标都是显示为「未注册的档案」类型的话,就表示WSH尚未安装。

图1-1 Script档案的图示与扩展名

VBScritp vs. Visual Basic/VBA与JScript vs. JavaScript

如果您曾经用Visual Basic或VBA写过程序,或者曾经以VBScript或JScript在HTML文件中撰写Script,那么用VBScript或JScript写作WSH对您而言就应该不是什么大问题了,但是您必须记住下列几点:

 Visual Basic的程序可以编译成EXE执行档,但是WSH却无此功能。在WSH中,您所有的Script都必须为扩展名是.vbs、.js或.wsf的纯文本档。WSH会直接使用Windows指令引擎(Script

Engine)来直译Script的内容,所以您可以使用纯文本档的编辑器(如 记事本 )来撰写您的Script程序。

 与WSH一同发布的VBScript和JScript并不包含某些程序的结构,比如说在Visual Basic和VBA中允许存取外部函数和程序的Declare宣告叙述(Statement)。还有VBScript并未包含处理延伸的执行时期错误(Run-Time Error)的例程(Routine),例如「On Error GoTo标记」的叙述。同时VBScript和JScript都不支持明确的(Explicit)数据类型宣告,相反地,他们将所有的变量视为Variant(一种能包含不同种类数据的特殊数据型态 )。

 WSH提供的对象模块(Object Model)与Internet Explorer提供的不同。举例来说,WSH中的nt对象并不支持用户的输出。

 因为WSH的环境不提供延伸的用户接口(类似Intenet Explorer中所提供的那样),所以WSH的对象模型没有开放任何用户接口的事件(Event),例如HTML Script中的onClick事件。但是,WSH支持事件处理(Event Handling)功能,关于这部分您将在后面的章节中看到。

要将Windows 95、Windows 98或Windows NT 4更新至WSH 2,您必须手动安装WSH。随书光盘中包含每种操作系统的WSH 2版本。您也可以从h

ttp:///taiwan/products/develop/scripting/ 网站免费下载最新版的WSH档案。

说明

至于Windows NT 4的使用者,您还必须先安装Service Pack 3。想要在Windows 95或Windows

NT 4中使用WSH,您应该安装好Internet Explorer 4或以上的版本。而要在Windows 95中以Internet

Explorer 3来执行WSH 2,您还必须安装DCOM(Distributed Component Object Model,分布式组件对象模型)。详细信息请参考台湾微软的网站:

/relaunch/XML/%20/taiwan/products/develop/scripting/%20 。

WSH与语言引擎的版本

您必须知道自己安装的是哪一种版本的WSH,以及用来执行这些Script的语言引擎的版本。Microsoft从3.1版(与WSH 1一起发布)的升级开始便发表了好几种语言引擎。3.1a版修正了几只臭虫(Bug)。Visual Basic 6与第4版的语言引擎一同发布。Internet Explorer 5包含第5版的语言引擎,其中修正了不少臭虫并且扩充语言的功能。Microsoft还提供可下载的语言引擎第5版当作另一种升级的方式(网址是h

ttp:///taiwan/products/develop/scripting/ )。

WSH 2是Windows Script 5.1的一部份,该版本还包括了5.1版的VBScript和JScript的语言引擎。而5.1版的语言引擎可以和Internet Explorer 4、5以及IIS(Internet Information Server)3、4等版本搭配使用。

建立并且使用Script

您已经准备好要建立并且使用您的第一支Script了吗?一开始,我们将以建立显示「Hello,

world」讯息之对话盒的简单程序来让您看见Script程序设计的基本功能以及如何执行Script。

用VBScript建立您的第一支Script

建立如图1-2所示的简单对话盒,您只需要用VBScript打上一行:

"Hello, world"

图1-2 简单的对话盒

那么您要如何建立Script档案呢?以这个简单的Script为例,您需要的只是 记事本

软件而已。示范步骤如下:

1. 启动 记事 本 并输入如图1-3所示的程序代码。其中叙述是这个程序中最重要的部分,其主要功能是建立一对话盒。

图1-3 您的第一支VBScript程序

2.

将编辑窗口中的内容储存为文本文件。您可以使用任何的檔名(例如Hello),但是扩展名一定要是.vbs。

说明

在此建议您使用.vbs做为VBScript档案的扩展名。这个文件类型已经自动注册给WSH使用了。如果您的Script档案使用的是其他的扩展名,那么将没有任何版本的WSH可以识别出他是用什么描述语言写的。双按一个错误扩展名(比如说.vb)的Script将会启动 开启档案...

的对话盒,因为没有应用程序注册给这个文件类型使用。

当您储存完这个Script之后,应该会有一个名为的档案在您的硬盘中。程序代码如 程序1-1

所示。

程序1-1

'*********************************************

' 档案: (WSH sample in VBScript)

' 作者:(c) G. Born

'

' 显示简单的对话盒

'*********************************************

"Hello, world"

'*** 程序结束

您或许会怀疑为什么这里使用8行程序代码而非之前所说的只需要1行指令就能叫用对话盒了呢?您只用1行程序代码就可以建立简单的Script档案是没错,但我鼓励您增加一些额外的信息做为批注,比如说您的姓名(程序的作者)和程序的目的等。这些批注对于您和其他人来说都是很有帮助的。(还是说您总是能够记住Script的目的和内容连续好几个礼拜呢?)其实指令引擎在执行时会略过所有的批注。

现在让我们回到程序代码。因为我们是以VBScript当作程序语言,因此所有的叙述都必须遵守VBScript的语法。在VBScript里面,批注是以单引号(')标示在行首的,例如:

' 这是单行批注

WSH中所使用的VBScript语言引擎会忽略一行之中跟随在单引号后面的任何部分。这表示您可以批注一整行或者只是后半行。举例来说,下面这个叙述显示一个包含「Hello, world」文字的对话盒。而后半行的批注将会被忽略。

"Hello, world" ' 显示讯息

说明

范例档案以及本章所有其他会用到的范例档案都放在随书光盘的WSHDevGuideChapter01文件夹中。您也可以在这个文件夹中发现样板(Template)档案和。您可利用这些档案当作样板来建立新的Script档案。只要加载样板到您的编辑器中(藉由右击该档案的图示并从快捷菜单中选择 编辑

)、加入新的指令,然后把内容另存新档即可。

以JScript建立相同的Script

如果您比较喜欢用JScript来撰写您的Script程序,则您可以使用我们刚刚讨论过的相同步骤。但是您必须将所有的叙述以JScript语法来输入。 程序1-2

显示从 程序1-1

而来的程序代码在JScript中的模样。

程序1-2

//*******************************************

// 档案: (WSH sample in JScript)

// 作者:(c) G. Born

//

// 显示简单的对话盒

//*******************************************

("Hello, world");

//*** 程序结束

在JScript中,单行的批注是由两个斜线(//)开始的,而多行的批注则是以「/*...*/」做为开始及结束。 程序1-2

包含了批注的头(前六行)和尾(最后一行)部分。在此还是用WScript对象(Object)的Echo方法(Method)来显示讯息盒。(您将在第3章中看到有关对象和方法的介绍。)

建立包含「Hello, world」文字以及 确定

钮的简单对话盒的叙述在JScript中看起来有些不太一样:

("Hello, world");

您看出哪里不同了吗?在JScript中,所有的叙述(除了少数例外)都以分号(;)结尾,这是一种很好的程序设计练习,而且Echo方法需要使用小刮号 ( )

来围住「Hello, world」字符串。

执行WSH Script

如果您有以.vbs或.js扩展名储存的WSH Script,则您可透过在Windows中双击该Script的图示,或是用 执行

对话盒来执行,甚至您也能从 命令提示字符

窗口中执行他们。

在Windows中执行Script

在Windows中您只要双击Script的图示就能执行该Script。Windows使用做为默认的指令主机(Script Host)来执行Script(因为在安装WSH的期间,文件类型已经注册给WSH)。

说明

有两个档案是专门用来实作WSH的。是一个以Windows为基础的指令主机,可用来透过对话盒与使用者互动。而则是一个Windows Console(控制台)应用程序。(他是在 命令提示字符

窗口中执行的,并且会将输出传送给标准输出STDOUT,就像原始的MS-DOS和Windows NT下的命令般。)主要是用于非交互式的工作中。在Windows 98中,是位在Windows文件夹中,而则是位于WindowsCommand文件夹底下。在Windows 2000里面,这两个指令主机都是放在WINNTSystem32文件夹中。

译注

指令引擎与指令主机

那么到底Script是如何运作的呢?这牵涉到两个重要的部分,首先是指令主机,他是一个由数种不同指令引擎所组合而成的应用程序。而指令引擎则是每种不同语言的个别直译器。举例来说,当我们执行一个Script程序时,我们可能是直接在该Script档案的图示上双击(此时使用的即是默认的指令主机),或是在 执行

对话盒中以「路径Script文件名」或「路径Script文件名」的方式执行(则此时使用的指令主机分别是或),然后指令主机再(根据扩展名)指定适合的指令引擎(例如VBScript的指令主机是,而JScript的指令主机则是)来执行该Script。

我们来试试看这个。首先在WSHDevGuideChapter01中找到,然后双击来启动范例程序。这个Script的结果就是前面图

1-2 显示的对话盒。如果您双击的是,那么执行结果的对话盒应该和图

1-2 显示的一模一样。您可以按下他们的 确定

钮来结束对话盒。

您也可以在 执行

对话盒中以或来执行该Script。(当您必须传送参数给Script时,这个方法就显得方便多了。)示范步骤如下:

1. 从 开始 菜单中选择 执行 。

2. 在 开启 文本框中输入可执行的指令(例如「 C:」)。

3. 按下 确定 钮关闭对话盒并且执行该Script。

使用命令提示字符窗口来执行Script

您也可以使用 命令提示字符

窗口来执行Script。和都支持这种方式。要执行Script程序,您必须在 命令提示字符

窗口中输入下列的命令:

路径Script文件名 [指令主机的选项] [Script的参数]

路径Script文件名 [指令主机的选项] [Script的参数]

「Script檔名」部分是Script文件名的占位符,包括该Script的磁盘驱动器和路径名称。您可以在命令行中附加额外的选项给指令主机并且/或者参数给Script。

「指令主机的选项」(用来开启或关闭WSH的功能)的前面总是跟着两个斜线(//)。表1-1是所有指令主机选项的说明。

表1-1 和的指令主机选项

选项

WSH 1WSH 2有支援

有支援

ˇ

ˇ

说明

//I

启动交互式模式─允许用户提示字符以及Script错误的显示。(此为默认值,相对的选项是//B。)

启动批次模式─隐藏命令行中用户提示字符和Script错误的显示。如果Script//B

ˇ

ˇ

使用Echo方法的话,所有的用户提示字符都会被取消。在WSH 2里,这个选项同时还能够让取消响应模式(Echo Mode)。

//T:秒数

//logo

//nologo

//H:CSctip

//H:WScriptt

//S

//?

//D

//E:引擎

//Job:号码

//X

ˇ

ˇ

ˇ

ˇ

ˇ

ˇ

设定逾时值(Timeout,最大秒数时间即等于该Script可以执行的时间)。

显示标志(在执行Script后显示在 命令提示字符 窗口中的文字,请参考 图1-4 的前面几行命令)。此为默认选项,相对的选项是//nologo。

防止执行的标志(Logo)被显示。

注册或WScript为执行Script的默认应用程序(分别为ˇ

ˇ

「//H:CScript」或「//H:WScript」选项)。在安装完毕后,会被设定为默认的指令主机。

ˇ

ˇ

ˇ

ˇ

ˇ

ˇ

ˇ

ˇ

为指定的用户储存目前的命令行选项。

显示指令主机选项的说明页。

针对.js和.vbs的Script档案启动主动式侦错(Active Debugging)功能(请参阅 第2章 )。

设定执行Script的指令引擎。

执行.wsf中指定「号码」的工作(Job)。

在调试程序中执行Script。

图1-4显示了示范在命令行中以几个选项呼叫 Script的 命令提示字符

窗口。

图1-4 几行呼叫和的命令

您可以使用「 //?」命令以叫用指令主机显示所有指令主机选项的列表。图1-5显示的是的选项。(从 开始

菜单中选择 执行

,并输入「 //?」,然后按下 确定

钮关闭对话盒。)

图1-5 指令主机的选项

设定Script的属性

稍早曾提过,您可以在或中设定几个执行Script的指令主机选项。在 命令提示字符

窗口中,您可在命令行输入选项。如果您喜欢在Windows中执行Script的话,那么您可以使用 执行

对话盒来设定Script的指令主机选项。

使用者一般都比较喜欢以双击(Script档案本身或快捷方式档案)的方式来启动Script。在这种情况之下,您可以在Windows中藉由右击该Script档案(从快捷菜单中选择 内容

,然后在 Script

页次中选取您想要的选项)来定义额外的属性,如图1-6所示。

图1-6Script 页次的内容

您可以勾选 在指定秒数之后,停止Script

复选框并且设定相关的逾时值。如果当逾时时间已到而Script还在继续执行,那么Windows就会终止这个Script。而 当Script在命令提示执行时显示标志

复选框则是会强制在 命令提示字符

窗口中显示「Microsoft (R) Windows Script

」的讯息。

当您按下 确定

钮关闭 内容

窗口后,Windows会建立一个相同档名但是扩展名为.wsh的新档案。双击这个档案会强制Windows以Script页次中设定的选项来执行该Script。扩展名为.wsh的档案是一种类似.ini档案的纯文本档。您可以用任何一种文本编辑器(例如 记事本

)来开启.wsh档案。.wsh档案的内容如下:

[ScriptFile]

Path=C:

[Options]

Timeout=10

DisplayLogo=1

在 [ScriptFile] 区段中的「Path(路径)」叙述指到要执行的Script档案。而 [Options] 区段中的关键词则是用来决定执行期间的属性。「Timeout(逾时)」用来设定用户在 Script

页次中指定的时间(秒)。而「DisplayLogo=1」则会强制在 命令提示字符

窗口中显示标志。(请参考表1-1中的/

/logo 和/

/nologo 选项的介绍)

说明

您可以修改.wsh档案中的「Path」叙述来使用相对的或通用命名约定(Universal Naming

Convention,UNC)的路径。使用相对的或者UNC的路径会使您的.wsh档案与其目标变得更具可移植性,因为这么做会将他从绝对路径(Absolute Path)的相依性中解放出来。举例来说,范例档案使用「Path=.」叙述来将档案参考到当前目录。您可以把和搬移到新的磁盘驱动器上,而只要这两个档案放在同一个目录下,那么就会找到。

传送参数给Script

前面的范例都不需要任何的参数(Argument)。然而在某些情况下,使用者会传送一或多个参数(例如某个档案的名称)给Script。程序1-3中的VBScript程序代码会显示出所有传送给Script的参数。

程序1-3

'********************************************

' 档案: (WSH sample in VBScript)

' 作者:(c) G. Born

'

' 在对话盒中显示传送给Script的所有参数

'********************************************

text = "参数:" & vbCrLf & vbCrLf

Set objArgs = nts ' 建立对象

For i = 0 to - 1 ' 用来通过所有参数的循环

text = text & objArgs(i) & vbCrLf ' 取得参数

Next

text ' 使用Echo来显示参数

'*** 程序结束

传递参数的潜在问题

在我们继续深入探讨之前,在此指出一些参数传递的问题。让我们假设您想要传递「Hello,

world」参数给您的Script。您不能够使用下面的命令,因为WSH会直译「Hello,」和「world」为分开的参数:

C: Hello, world

要传送包含空格符的字符串当作一个参数,您必须在参数的前后加上用双引号("),例如:

C: "Hello, world"

当您传递参数给Script时还有另外一个问题可能会发生。如果您的Script档案使用的是长文件名,您必须在此路径名称前后加上双引号。举例来说,如果您使用下列的命令来执行档名为「Args

」的Script,则奇怪的事情将会发生:

C:WSHDevGuideChapter01Args "Hello, world"

在Windows2000里面,您会得到一个「在"C:WSHDevGuide Chapter01Args"中,没有档案扩展名。」的讯息。而在Windows 95和Windows 98中,Script会执行,但是回报的是错误的参数。这个动作起因于Windows如何处理命令行。您可以藉由使用双引号围住包含空格符的长文件名来避免这种结果。这行命令必须改写成下面这样:

"C:WSHDevGuideChapter01Args " "Hello, world"

以上这几行命令您也可以改用来试试看。

程序1-3中的Script取得WScript对象的Arguments集合(Collection),并且在对话盒中显示包含在这个集合中的所有参数,如图1-7所示:

图1-7 显示传送的参数

假设您有个Script档案,并且您想要传递一些参数给这个Script。双击该Script是不够的,因为这样只会执行该Script而已。要传递参数给Script,您应该从 开始

菜单中选择 执行

来显示 执行

对话盒(如图1-8所示)。接着依序在 开启

文本框中输入指令主机名(或)、磁盘驱动器、路径名称、以及Script的檔名等。最后参数被附加在命令行的后面,而且必须以空格符分隔开来。

图1-8 使用 执行 对话盒来传递参数给Script

若您觉得使用 执行

对话盒来传递参数很不习惯,您可以建立该Script的快捷方式并且将参数设定为此快捷方式的内容(只要参数不改变的话)。示范步骤如下:

1. 右击该Script档案的图示,并从快捷菜单中选择 建立快捷方式 。

2. 右击该快捷方式档案,并从快捷菜单中选择 内容 。

3. 在 快捷方式 页次的 目标 文字字段中指定命令和参数(如图1-9所示)。

图1-9 Script档案之 快捷方式 页次的内容

当您按下 确定

钮关闭 内容

窗口时,Windows会储存这些参数。当下次使用者双击该快捷方式档案时,这些参数便会自动传递给Script。

在命令提示字符窗口中传递参数

您的Script需要参数(例如档案的名称)吗?您是用 命令提示字符

窗口来执行您的Script(使用或)吗?除了指定指令主机选项(以两个斜线为首)之外,您还可以传送某些参数(比如说额外的Script选项)给Script。您只要将Script的参数以空格键(Space)隔开放在命令行的后面即可。

您可以在 命令提示字符

窗口中像下面这样呼叫我们的范例,例如:

C: //S "Hello, world" 1 2 3

C: //S "Hello, world" 1 2 3

图1-10显示一些命令在 命令提示字符窗

口中使用执行的状况。

图1-10 在 命令提示字符 窗口中执行Script并且传递参数

说明

因为个别的参数都是非必要的,所以您起码得在命令行中指定Script的檔名。您不需要将参数用斜线(在WSH的文件中是建议使用的)标示起来。同时您可以将「//选项」与传递给Script的参数混用,例如图1-10中的第二行命令。

在图1-10中所使用的是显示在程序1-4中的JScript范例。这个Script用Echo方法来显示传送的参数。若您是用当作指令主机,那么Echo方法会把所有输出(都是一些Windows控制台程序的标准动作)传送到 命令提示字符

窗口中。

提示

您可以使用输出/输入重导(I/O Redirection)搭配Echo这个方法来将您的Script结果输出到档案中。「 D: "Hello" 1 > D:」命令会建立档案,并将Script所有的输出导向这个档案。

说明

另一个常用的导管(Pipe)技巧将留到第14章再做介绍。

程序1-4

//******************************************

// 档案: (WSH sample in JScript)

// 作者:(c) G. Born

//

// 在对话盒中显示Script的参数

//******************************************

var objArgs;

var text = "参数:nn";

var objArgs = nts; // 建立对象

for (var i = 0; i < ; i++) // 给所有参数用的循环

text = text + objArgs(i) + 'n'; // 取得参数

(text); // 使用Echo方法来显示参数

//*** 程序结束

新的.wsf文件格式

虽然您可以在WSH 2中使用.vbs和.js Script档案,但是Microsoft定义了一种使用.wsf(意思是Windows Script File)为扩展名的新文件格式。.wsf的档案跟.vbs和.js的档案一样都是文本文件,但是他包含了可扩充式标示语言(Extensible Markup Language,XML)程序代码。.wsf的基本架构如下:

这些标签(Tag)描述了XML的构成元素,而「」部分则包含了普通的Script程序代码。

说明

因为.wsf档案是XML文件,所以您可以使用任何支持XML的编辑器来编辑他。如果您没有这样的编辑器,则您可以使用任何其他的文本编辑器(例如 记事本

)。

一些.wsf档案使用的XML延伸功能

之前的范例程序只包含了建立能够执行的.wsf档案所需要的最基本XML元素(Element)。为了考虑与XML文件规格兼容性的缘故,建议您在.wsf档案中使用一些延伸的结构,例如:

执行该Script时会导致WSH先去加载并处理档案。直到控制权回到.wsf档案后,包含叙述的第二个

在第12章中将回到使用类型链接库的讨论,届时我们会开始处理磁盘驱动器、档案以及文件夹。您可以在Microsoft Press出版的《Advanced Development with Microsoft Windows Script Host 2.0》一书中找到 元素(包括找出类型链接库的GUID值的技巧)的更深入探讨。

侦错功能

您可以在您的.vbs和.js Script档案(在WSH 1中)里面使用诸如stop和debugger等简单的叙述来自动呼叫调试程序(已经安装过的)。要在WSH 2环境中为Script侦错,您必须在命令行中使用 //D或 //X选项来叫用您的Script。

要藉由右击该.wsf档案来为他进行侦错,您可以使用 元素中的「」程序指令。如果在Script中stop或debugger指令被发现的话,这两个指令会强制WSH启动Script调试程序。而 元素中的「」叙述则会取消呼叫Script调试程序。下面的程序代码(位于范例中)示范了如何在.wsf档案中设定「」程序指令:

倘若Script调试程序无法在WSH 2中工作

有些使用者会发现在他们安装完WSH 2后,Script调试程序却无法与.wsf档案一起工作。这是WSH 2.0里的一只臭虫,而它将在下一版中修正。幸运的是,您可以使用简单的绕行(Workaround,指其他解决方法的意思)来克服此问题。

在登录档(Registry)中,下面的机码(Key)包含JITDebug这个DWORD值:

HKEY_CURRENT_USERSoftwareMicrosoftWindows ScriptSettings

如果该值设成0,那么侦错功能会被取消。而若设定JITDebug值为1,则会启动侦错功能。在您改变了设定之后,侦错的功能就可以在WSH 2中工作了。

如果您不想亲自修改您的登录档,那么您也可以使用档案来完成。双击该档案,然后您的登录档就会自动更新完毕


本文标签: 档案 使用 执行 指令 参数