WSH对象模型入门
wsh全称Windows Script Host.它是一个环境,在这个环境中不同的脚本引挚可以执行不同语言骗写的脚本。WSH有两个引挚分别是为VBSCRIPT和JSCRIPT构建的;它也提供了对COM自动化对象的访问。执行脚本时可能指定使用脚本宿主wscript.exe或csript.exe.wscript会把脚本作为GUI环境的一部分启动,csript是在命令控制台下启动脚本。
它们的相关参数:
//E 为特殊文件类型设定默认脚本旨挚。
//Job:jobID 执行作业标识符标记的一部分代码。
//T:Seconds 为脚本执行设定一个超时
//nologo 不显示版本信息。
对像的激活与移除
在使作任何其它的COM对象前,首行要对它们进行激活。激活创建那个对象的引,并在脚本的持续期间把它存储在一个变量中,然后就可像使用对象本身一样使用这个变量。激活一个对象有两种方法:
使用Wscript的CreatObject方法:
Dim ObjExcel
Set ObjExcel = Wscript.CreatObject("Excel.Application")
使用VBScript的CreatOjbect函数:
Dim ObjExcel
Set ObjExcel = CreatObject("Excel.Application")
当不再需要一个对象时,应将它移除以便宜释放系统资源。如果进程与WSH执行程序进行在相同的进程空间,脚本结束时会自动发生。如果在进程外COM对象中工作象word.Application等就要先使用一种方法停止应用程序,然后把保持对象引用的变量设为Nothing:
Option Explicit
Dim ObjExcel
Set ObjExcel = CreateObject("Excel.Application")
'do whatever processing you need
ObjExcel.Quit
Set OjbExcel = Nothin
深入Windows脚本主机对象模形:
我们可以认为WScript对象是WSH对象模型的入口。模型中的一些对象分组到集合中,WScript对象可以访问的对象和集合包括如下:
>WshShell对象是通过CreateObject(Wscript.shell)函数或方法来激活,可用于环境变量、特殊文件夹、快捷方式和注册表以及启动外部程序。
一旦激活了WshShell对象它就能够用于创建附加的WSH对象和对象集合:
……WshEnvironment对象,通过WshShell.Environment属性激活,用于访问环变量。
……WshShortcut对象,通过WshShell.CreateShortcut()方法激活,用于访问文件和文件夹的快捷方式。
……WshUrShortcut对象,通过WshShell.CreateShortcut()方法激活,用于访问URL的快捷方式。
……WshSpecialFolders对象, 通过WshShell.SpecialFoldes属性激活,用于访问特殊文件夹:我的电脑、桌面、拨号网络……
>WshNetwork对是通过CreateObject(Wscript.WshNetwork)函数或方法来激活。可用于访问共享的网络打印机和文件夹。
一旦激活了WsheNetwork对象它就能够用于创建附加的WSH对象和对象集合:
……DriveMapping集合(WshCollection的实例)通过WshNetwork.EnumNetworkDrives()方法激活,用于访问当前驱动器映射。
……NetworkPrinters集合(WshCollection的实例)通过WshNetwork.EnumPrinterConnections()方法激活,用于访问当前打印机集合。
>WshArguments集合可以通过WScript.Arguments属性来访问,可用于访问一组脚本参数。这些参数是在使用wscript和cscript调用期间在命令行中输入的值:
cscript.exe Myscript.vbs One Two
One Two是两个参数,它们分别由Wscritp.Arguments(0)和Wscritp.Arguments(1)引用。参数能够使用不同组的值运行脚本,而不用对代码做任何修改在运行状态下不必与脚本交互。
FileSystemObject对象模型
本地文件系统从VBscrip特性库中取消,如果VBScript运行在WSHI提供的环境中,它就可以利用脚本运行时库的FileSystemObicet对象模型。我们要从创建对象的根模型开始:
Dim objFso
Set objFso = CreateObjcet("Scripting.FileSystemObject")
对象创建后就可以访问模FILESYSTEMOBJECT对象的其它部件:
……Drives(Drive对象集合);包括软盘、可移动硬盘和固定磁盘及网络映射。
……Folders(Folder对象集合);包括基于系统的文件夹,但不能支持特殊文件夹。
……Files(File对象集合)
……TextStream;提供处理文本文件的属性和方法。
使用FileSystemObject的方法属性,可以操作文件系统的每个部件。让我们来了解它更多的属性和方法:
……DriveExists FolderExists fileExists:允许校验每个文件系统部件是否存在。
……GetTempName:在你需要创建一个临时文件夹的情况下非常有用。
……GetDrive:返回一个驱动器对象。驱动器引用是可用时,就可以访问它的属性,如:AvailableSpace DriveLeeter DriveType FileSystem FreeSpace IsReady Path RootFolder SerialNumber ShareName TotalSize VolumeName
……GetFolder;返回一个文件夹对象可以访问的属性有:Attributes DateCreated DateLastAccessd DateLastModified Drive Files IsRootFolder Name ParentFolder Path ShortName ShorPath Size SubFolders Type 方法:copy Delete Move CreateTextFile
……GetFile;返回一个文件对象,当文件引用是可用时你可以访问的属性和方法有:Copy Delete Move OpenAsTextStream
TextStream对象是处理文本文件最快的方法,它可以通过如下方法创建:
……FileSystemObject的CreateTextFile方法
……FileSystemObject的OpenTextFile方法
……Folder对象的CreateTextFile方法
……File以的OpenAsStream方法
对象的属性和方法简化了文件内容的处理,可用的属性有:Column Line AtEndOfLine ArEndOFstream 可用的方法有:Close Read ReadAll ReadLine Skip SkipLine Write WriteLine WriteBlankLines
MapNetworkDrive方法:
将网络共享映射为本地资源
object.MapNetworkDrive strLocalName,strRemoteName,[struser],[strPassword]
方括号内为可选项,就不做解释;
object:WshNetwork对象
strLocalName:映射为本地资源的命名
strRemoteName:要映射的网位置名称
来看一个示例:
Set WshNetwork = Wscript.CreateObject("WScript.Network") '激活wsh对象
WshNetwork.MapNetworkDrive "z:",\\share\d '将远程共享映射为本地z:
EnumNetworkDrives方法:
列出本地映射的网络资源,请看示例:
Set WshNetwork = CreateObject("WScript.Network")
Set emNt = WshNetwork.EnumNetworkDrives
For i = 0 to emNt.count - 1 Step 2
WScript.Echo " Drive " & emNt.Item(i) & " = " & emNt.Item(i+1)
Next
RemoveNetworDrive方法:
移除映射的网络资源;
一个示例:
set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.RemoveNetworkDrive "z:"
AddWindowsPrinterConnection方法:
在windows中添加一个打印机的连接,
object.AddWindowsPrinterConnection"strPrinterPath"
object指的是WshNetwork对象;
strPrinterPath是指Printer路径
一个添加打印机连接的示例:
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.AddWindowsPrinterConnection \\PrinterServer\Brother MFC-7420 USB Printer
SetDefaultPrinter方法:
打印机添加完后通常会设置一个为默认打印机,这就要用到serdefaultprinter方法:
WshNetwork.SetDefaultPrinter \\PrinterServer\Brother MFC-7420 USB Printer
EnumPrinterConnections方法:
Set WshNetwork = CreateObject("WScript.Network")
Set oPrinters = WshNetwork.EnumPrinterConnections
WScript.Echo
For i = 0 to oPrinters.COunt - 1 Step 2
WScript.Echo " Drive " & oPrinters.Item(1) & " = " & oPrinters.Item(i+1)
Next
RemovePrinterConnection方法:
移除不需要或多余的打印
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.RemovePrinterConnection \\PrinterServer\Brother MFC-7420 USB Printer
WshNetwork对象
提供对windows的网络的访问,自动化的完成网络驱动器、打印机的访问连接;
请看用vbs写的示例:
Set WshNetwork = CreateObject("WScript.Network")
Set oDrives = WshNetwork.EnumNetworkDrives
Set oPrinters = WshNetwork.EnumPrinterConnections
WScript.Echo "Domain = " & WshNetwork.UserDomain
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
WScript.Echo "User Name = " & WshNetwork.UserName
WScript.Echo
WScript.Echo "Network drive mappings:"
For i = 0 to oDrives.Count - 1 Step 2
WScript.Echo "Drive " & oDrives.Item(i) & " = " & oDrives.Item(i+1)
Next
WScript.Echo
WScript.Echo "Network printer mappings:"
For i = 0 to oPrinters.Count - 1 Step 2
WScript.Echo "Port " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1)
Next
转自:http://hi.baidu.com/hbp555/blog/item/e5fa8184050ce03267096e38.html