WScript使用小技巧

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


Arguments

FullName

Interactive

Name

Path

ScriptFullName

ScriptName

StdErr

StdIn

StdOut

Version
Argument
Argument 属性包含了 WshArguments 对象(一个参数集合)。从该集合中获取 单个参数时,使用由 0 开始的索引。
WScript.DisconnectObject RemoteScript
Echo
该方法输出一个消息框或一个命令控制台窗口。
object.Echo [Arg1] [,Arg2] [,Arg3] ...

object:WScript 对象。

Arg1、Arg2、Arg3、……:可选。表示要显示项目的列表。
WScript.Echo WScript.FullName
这段代码产生如图 15-4 的输出。
图 15-4
Interactive
Interactive 属性设置脚本的模式,或识别脚本的模式。使用该属性会返回 一个布尔值。有两种可用的模式:批处理模式和交互模式。
在交互模式下(默认情况),脚本可以与用户进行交互。可以向 WSH 输入信息, WSH 也可以输出信息,信息被显示在对话框中,等待用户提供反馈。在批处理模 式中,不支持用户交互,不支持 WSH 的输入和输出。
strLineIn = streamIn.ReadLine If 0 = StrComp(strExt, Right(strLineIn, Len(strExt)), _
vbTextCompare) Then streamOut.WriteLine strLineIn intMatch = intMatch + 1 End If Loop If 0 = intMatch Then streamErr.WriteLine "No files of type '" & strExt & "' found" End If 因为这个示例中使用 StdIn、StdOut 和 StdErr 进行消息的处理,所以不仅 能将匹配的文件打印在屏幕上,也能够将输出结果发送到一个文本文件或其他有 重定向或附加管道功能的应用程序中。例 如,可以使用下面的命令创建一个文 件,包含整个目录树,包括子目录中的所有.vbs 文件: C:\wsh>dir /s | cscript filter.vbs vbs >> vbsfiles.txt Version 该属性返回 WSH 的版本。下面的代码显示当前 WSH 的版本,如图 15-7 所示: WScript.Echo WScript.Version
15.6 Windows 脚本宿主的内建对象
每个编程环境都提供了自己的对象模型,开发人员 可以使用这些对象模型 实现各种解决方案,WSH 也不例外。WSH 包含了一组核心对象,分别包含了属性 和方法,可以用于访问网络中的其他计算机、导入外部的 可脚本化对象以供应 用程序使用,或者连接到 Windows 或 Windows Shell。
可以使用 WSH 命令行开关脚本模式//I(交互模式)和//B(批处理模式)来设置 脚本模式。
Name Name 属性返回 WScript 对象(宿主可执行文件)的名称,它是一个只读的字符 串。下面的代码使用了 Name 属性: WScript.Echo 这段代码产生如图 15-4 的输出。
StdIn
StdIn 属性开放当前脚本的只读的输入流。该属性返回一个标识标准错误流 的对象。只有使用 cscript.exe 时才能访问 StdIn、StdOut 和 StdErr 流。使用 wscript.exe 时如果想访问这些流就会产生一个错误。
StdOut
StdOut 属性开放当前脚本的只写的错误输出流。该属性返回一个标识标准错 误流的对象。只有使用 cscript.exe 时才能访问 StdIn、StdOut 和 StdErr 流。 使用 wscript.exe 时如果想访问这些流就会产生一个错误。
该方法强制脚本在任意时刻立即停止执行。
object.Quit([intErrorCode])

object:WScript 对象。

intErrorCode:可选。返回一个整数值,作为进程的返回
码。如果忽略 intErrorCode 参数,就不会有返回值。
Quit 方法可以用于返回一个可选的错误代码。如果 Quit 方法是脚本中的最 后一条命令(并且不需要返回一个非零值),就可以不使用任何参数,这样脚本就 会正常退出。
WScript.Quit 0 ' success
序标识符(ProgID)。

strPrefix:可选。进行对象事件同步时有用。如果提供了
strPrefix 参数,WSH 就会在创建对象之后将对象的输出接口连接到脚本
文件。
如果内存中存在对象的一个实例,或者想从文件创建一个对象,都需要使用 GetObject 方法。GetObject 方法适用于所有 COM 类,与创建对象使用的脚本语 言无关。
如果创建对象时没有使用 strPrefix 参数,也可以使用 ConnectObject 方法 同步对象的事件。只要对象产生一个事件,WSH 就会调用一个子程序,其名称是 strPrefix 加上事件的名称。
下面的代码使用 CreateObject 方法创建一个 WshNetwork 对象:
Set WshNetwork = WScript.CreateObject("work")

object:WScript 对象。

strProgID:值为字符串,表示想要创建的对象的程序标识
符(ProgID)。

strPrefix:可选。值为字符串,表示函数前缀。
使用 CreateObject 方法和 strPrefix 参数创建的对象是已连接对象。对象 被创建后,其输出接口与脚本文件相连接。每个事件函数都由这个前缀加上事件 的名称来命名。
ConnectObject
该方法将对象的事件源连接到具有给定前缀的函数。
object.ConnectObject(strObject, strPrefix)

object:WScript 对象。

strObject:必需的。表示想要连接的对象名称的字符串。

strPrefix:必需的。表示函数前缀的字符串。
图 15-7
2 WScript 的方法
WScript 对象具有下列方法:

CreateObject

ConnectObject

DisconnectObject

Echo

GetObject

Quit

Sleep
CreateObject
WScript 对象的这个方法用于创建一个 COM 对象。
object.CreateObject(strProgID[,strPrefix])
object.DisconnectObject(obj)

object:WScript 对象。

obj:表示想要断开连接的对象名称的字符串。
断开一个对象的连接意味着 WSH 无法再响应它的事件。但是,有一点很重要, 那就是断开连接后对象仍然能够产生事件。还要注意的是,如果指定的对象尚未 连接,DisconnectObject 方法就不会做任何事。
只读的字符串。 ScriptName ScriptName 属性返回当前正在运行的脚本的文件名。该属性返回一个只读的
字符串。下面的代码显示了正在运行的脚本的名称,如图 15-6 所示: WScript.Echo WScript.ScriptName
图 15-6
StdErr
StdErr 属性开放当前脚本的只写的错误输出流。该属性返回一个标识标准错 误流的对象。只有使用 cscript.exe 时才能访问 StdIn、StdOut 和 StdErr 流。 使用 wscript.exe 时如果想访问这些流就会产生一个错误。
WScript.Quit 1
' This line of code is not executed.
MsgBox "This message will never be shown!"
下面给出了 Quit 方法实际运行的示例。
If Err.Number <> 0 Then
WScript.Quit 1 ' some failure indicator Else
如果内存不存在对象的实例,也不想从文件创建对象,就可以使用 CreateObject 方法。
Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SCHEMA.DRW")
MyApp = MyObject.Application
Quit
下面的示例使用了这三种类型的内建流打印匹配某一特定扩展名的所有文 件列表。这是通过将 DOS 的 dir 命令结果使用管道重定向到过滤器脚本来实现的, 其中将扩展名字符串作为参数。
' Usage: dir | cscript filter.vbs ext
'
ext: file extension to match
新的对象。
object.GetObject(strPathname [,strProgID], [strPrefix])

object:WScript 对象。

strPathname:包含将对象保存到磁盘的文件所使用的完整
的有效路径名。

strProgID:可选。值为字符串,表示想要创建的对象的程
15.6.1 WScript 对象
WSH 对象模型的基础就是 WScript 对象。这个对象提供了使开发人员能够访 问各种信息的属性和方法,如:

将要执行的脚本的名称和路径信息

Microsoft 脚本引擎的版本

与外部对象的链接

与用户的交互


延迟或中断脚本执行的能力
1. WScript 的属性
WScript 对象具有下列属性:
根据当前使用的 WSH 引擎的不同,Echo 方法输出的类型也有所变化(参见表 15-3)。
表 15-3
WSH 引擎 Wscript.exe Cscript.exe
文本输出 图形消息框 命令控制台窗口
图 15-8 和图 15-9 显示了这两种输出的示例。
图 15-8
图 15-9 GetObject GetObject 方法根据指定的 ProgID 获取某个已存在对象,或从文件创建一个
'
Dim streamOut, streamIn, streamErr
Set streamOut = WScript.StdOut
Set streamIn = WScript.StdIn
Set streamErr = WScript.StdErr Dim strExt, strLineIn Dim intMatch strExt = WScript.Arguments(0) intMatch = 0 Do While Not streamIn.AtEndOfStream
Set objArgs = WScript.Arguments
For x = 0 to objArgs.Count - 1
WScript.Echo objArgs(x)
Next
FullName
FullName 属性是一个只读的字符串,它代表宿主可执行文件(cscript.exe 或 wscript.exe)的有效完整路径。下面的代码使用了 FullName 属性。
图 15-5 Path Path 属性返回包含宿主可执行文件(cscript.exe 或 wscript.exe)的目录
名。该属性返回一个只读的字符串。 下面的 VBScript 代码将显示可执行文件所在的目录名:
WScript.Echo WScript.Path ScriptFullName ScriptFullName 属性返回当前正在运行的脚本的完整路径。该属性返回一个
同步一个对象的事件时,已连接对象是很有用的。对象被创建后, ConnectObject 方法将对象的输出接口连接到脚本文件。事件函数的名称就是这 个前缀加上事件的名称。
WScript.ConnectObject RemoteScript, "remote_"
DisconnectObject
该方法用于断开已连接对象的事件源的连接。
相关文档
最新文档