VBA代码中,如何利用Windows Scripting Host进行文件处理-hosts文件

大家好,我们今日继续讲解VBA代码解决方案的第66讲内容:使用Windows Scripting Host处理文件。我们知道,利用Windows Scripting Host(WSH)可以创建一些控制Windows操作系统的小程序,也可以创建从操作系统中获取信息的一些小程序。在使用WSH时,FileSystemObject对象可以用来处理文件系统。

可能有的朋友对于WSH还不是很清楚,我就来详细的给大家讲解。

VBA代码中,如何利用Windows Scripting Host进行文件处理

Windows Scripting Host,其通用的中文译名为"Windows脚本宿主"。它是内嵌于 Windows 操作系统中的脚本语言工作环境。这个概念最早出现于 Windows 98 操作系统。大家一定还记得 MS-Dos 下的批处理命令,它曾有效地简化了我们的工作、带给我们方便,这一点就有点类似于如今大行其道的脚本语言。但就算我们把批处理命令看成是一种脚本语言,那它也是 98 版之前的 Windows 操作系统所唯一支持的"脚本语言"。

此后随着各种真正的脚本语言不断出现,批处理命令显然就很是力不从心了。面临这一危机,微软在研发 Windows 98 时,为了实现多类脚本文件在 Windows 界面或 Dos命令提示符下的直接运行,就在系统内植入了一个基于 32 位 Windows 平台、并独立于语言的脚本运行环境,并将其命名为"Windows Scripting Host"。WSH 架构于 ActiveX 之上,通过充当 ActiveX 的脚本引擎控制器,WSH 为 Windows 用户充分利用威力强大的脚本指令语言扫清了障碍。

当你自己编写了一个脚本文件,如后缀为 .vbs 或 .js 的文件,然后在 Windows 下双击并执行它,这时,系统就会自动调用一个适当的程序来对它进行解释并执行,而这个程序,就是 Windows Scripting Host,程序执行文件名为 Wscript.exe (若是在命令行下,则为 Cscript.exe)。

WSH 诞生后,在 Windows 系列产品中很快得到了推广。除 Windows 98 外,微软在 Internet Information Server 4.0、Windows Me、Windows 2000 Server,以及 Windows 2000 Professional 等产品中都嵌入了 WSH。现在,早期的 Windows 95 也可单独安装相应版本的 WSH。

任何事物都有两面性,WSH 也不例外。应该说,WSH 的优点在于它使我们可以充分利用脚本来实现计算机工作的自动化;但不可否认,也正是它的这一特点,使我们的系统又有了新的安全隐患。许多计算机病毒制造者正在热衷于用脚本语言来编制病毒,并利用 WSH 的支持功能,让这些隐藏着病毒的脚本在网络中广为传播。尤其是邮件附件里的一些脚本文件还是应该保持戒备。

在使用WSH处理文件时,必需使用CreateObject函数创建一个ActiveX对象(FileSystemObject对象),用来提供访问计算机的文件系统,如下面的代码所示:

Dim MyFile As Object

Set MyFile = CreateObject("Scripting.FileSystemObject")

上面的代码首先声明一个名为MyFile的对象变量,然后使用CreateObject函数创建一个ActiveX对象并将该对象赋给对象变量。

CreateObject函数创建并返回一个对ActiveX对象的引用,语法如下:

CreateObject(class,[servername])

其中参数class是必须的,要创建的应用程序名称和类,使用appname.objecttype这种语法,appname指定该对象的应用程序名称,objecttype指定该对象的类型或类。

在声明了对象变量MyFile为Windows Scripting库的FileSystemObject对象后就能使用该对象的属性、方法来处理文件系统。

特别注意点:Windows Scripting Host是基于32 位 Windows 平台,在64位上运行有时会报错(在一些程序的实测时会很明显),在我之后的文章中此点不再声明,大家要注意。

今日内容回向:

1 什么是Windows Scripting Host?

2 应用Windows Scripting Host要特别注意什么呢?

推荐阅读