日期:2010-09-19  浏览次数:21263 次

  1.引言

  WSH的全称是Windows Script Host,是一种支持ActiveX(COM)的独立脚本语言。WSH脚本程序本来是为了替代DOS时代的批处理文件而产生的,后来由于WSH的应用很广泛,已经不只是局限于批处理的替代品了。从Windows98开始,操作系统就已经自带了WSH,因此在Windows98或以上的操作系统中,可以不安装任何软件就能直接使用WSH。Microsoft的主页上有最新版的WSH供下载,目前的版本是5.6,有用于Windows9X与Windows2000/XP的两种版本,每种版本的安装文件均不超过1M。

  2.WSH脚本文件的基本概念

  2.1 WSH脚本文件类型

  WSH可以使用VBscript与Jscript,即使用的脚本语言与网页脚本是一样的。WSH文件的扩展名为vbs及js,分别用VBscript与Jscript作为编程脚本语言。还有一种脚本文件的扩展名是wsf,它是一种包含XML的文件,wsf文件中可以同时包含VBscript与Jscript两种语言。wsf文件中,可以使用多种脚本,需要一些XML标签来声明的,最基本的就是用<script>标签说明脚本的类型,另外最外层要用<job>标签声明任务。下面就是一个最简单的wsf脚本的框架例子:

<package><job>
<script language="VBscript">
wscript.Echo "这是VBscript" 'vb脚本
</script>
<script language="jscript">
wscript.Echo("这是jscript") ;//java脚本
</script>
</job></package>

  而vbs与js文件就不用任何额外的内容,直接写VBscript及Jscript语句即可。

  2.2 WSH脚本文件的运行:

  上面所讲的3种wsh文件都可以直接在Windows中双击运行,他们关联的执行文件是wscript.exe文件。另外执行脚本的程序还有一个,它是cscript.exe,是一个可以在DOS下运行的程序。当然DOS下运行的程序与Windows的大部分功能是相同的,只是稍微有点不同,如同样是Wscript.Echo输出语句,wscript.exe的结果是以窗口方式显示,而cscript.exe是以标准控制台方式输出,并可以进行DOS改向。

  另外运行WSH脚本时也支持文件的拖放操作。具体的操作步骤是:选中若干个文件,把它们拖到包含下面脚本的文件,那么下面vbs脚本就会执行,并获取拖过来的文件名,把它们显示出来:

Set objargs=Wscript.Arguments
For i=0 to objargs.count-1
Wscript.Echo objargs(i)
Next


  2.3 WSH的主要对象

  WSH的脚本不支持API功能,WSH除了提供若干脚本语言外,还提供了一些编程可以使用的对象,利用这些对象,可以方便地进行一些脚本语言本身不具备的功能,如系统、网络等操作。

  2.3.1 Wscript对象

  Wscript对象是WSH本身具有的对象,在脚本中不需要建立,可以直接使用。它的最常用的一个方法CreateObject,用于创建一个COM对象,可以调用其他COM程序。WSH的Echo方法、Quit方法、Sleep方法,以及Path属性、ScriptFullName属性都可以在脚本中使用,为脚本的编写提供方便。

  2.3.2 WshShell对象

  WshShell对象是WSH提供的最有用的一个对象,有许多系统功能平时只能用API方式才能实现,用WshShell的方法即可简单地实现。它可用Wscript.Createobject(“wscript.shell”)方法建立。其常用方法与属性有:CreateShortcut方法用于创建一个快捷方式或URL快捷方式; Run方法用于执行程序,功能比VB的Shell命令功能要强,可以直接打开关联文件、文件夹、网页等;RegDelete/RegRead/RegWrite方法是对注册表项的删除、读取与写入,是非常有用的;SendKeys方法将指定的按键序列送至活动窗口;SpecialFolders属性返回特殊的文件夹名,如桌面、我的文档等。

  2.3.3 WshNetwork对象

  WshNetwork对象主要涉及网络及打印机方面的功能,其主要方法与属性有:建立或删除网络打印机的连接,映射及删除网络驱动器,枚举网络驱动器及网络打印机等方法。

  2.3.4 WshShortcut/ WshUrlShortcut对象:

  WshShortcut/WshUrlShortcut对象并不能由Createobject方法来产生,而是由WshShell的CreateShortcut方法建立。先设置快捷方式的相关属性,再用Save方法建立即可。

  2.3.5 FSO对象:

  FSO是File System Object的缩写,它提供磁盘、文件夹及文件的有关操作,是由WScript.CreateObject("Scripting.FileSystemObject")产生。FSO对象对于使用过动态网页制作的人是不陌生的,后台程序对于文件操作基本上都是用FSO来实现的。由于VBscript脚本语言是VB语言的一个简易版,去掉了VB的一些功能,其中所有的文件功能都去掉了,所以脚本中只能用COM的方法调用FSO对象来解决文件夹及文件的一些操作。从严格意义上来讲,FSO对象不是WSH所带的,而是VBscript所带的,但由于WSH本身带了VBscript,而且FSO在WSH的作用 非常大,所以说WSH带了FSO也未尝不可。但由于介绍FSO的文章很多了,所以这里就不再对它进行细述了。

  2.3.6 调用其它对象:

  WSH是可以调用其它的COM对象的,所以只要机器上已经安装的软件,并提供COM服务器方式的,都可以在WSH中调用。包括ODBC数据库操作对象、各种EXE方式的对象等,如可以直接操作Word的“Word.Application”对象。即WSH能使用的对象就是无穷的了。

  2.4 WSH文件的编辑

  由于WSH文件是一个纯文本文件,从理论上讲,可以用任何的文本编辑器均可进行编辑。但由于现在一些网页制作软件都为一些脚本程序提供属性及方法的智能提示功能,所以选择一些这样的工具会方便许多的。其中微软的Visual InterDev是不错的选择,毕竟它与WSH都是微软的产品,互相配合比较好。当然若输入是按网页的方式进行,最后可能要去掉一些HTML标签。

  2.5 脚本示例

  下面是一个软件安装的脚本例子,它完成文件复制、在桌面建立快捷方式、修改注册表设置自动启动的功能。程序中有详细的注释,有VB基础的都能够看明白的。完成某软件的安装,只需要把下面的程序保存成一个VBS文件,与要安装的文件放在同一目录下,在需要安装的机器上直接双击就可以安装了。

'建立两个对象:
Set owsh = wscript.CreateObject("WSCript.Shell")
Set ofso = wscript.CreateObject("Scripting.FileSystemObject")
'提示目标文件夹
cdest = InputBox("要安装的目标文件夹:","安装","c:\xxx")
'脚本所在文件夹为源文件夹:
cSrc= ofso.GetFile(wscript.scriptfullname).ParentFolder
'复制文件到目标文件夹:
ofso.copyfile cSrc &"*.*", cDest
'在桌面建立快捷方式:
cDesktop = owsh.specialFolders("desktop") '桌面文件夹
Set olink = owsh.createshortcut_
(cDesktop & "\xx管理系统.lnk") '建立快捷方式对象
olink.targetPath = cDest & "xx.exe" '目标文件
olink.WindowStyle=1 '运行方式:常规窗口
olink.hotkey="CTRL+SHIFT+F" '热键
olink.Workingdirectory=cDesktop '工作目录
olink.save '生成快捷文件
'把程序写入注册表的自动运行项中,让程序开机时自动