Board logo

标题: [技术讨论] vbs中的"Wscript"[属性与方法] [打印本页]

作者: czjt1234    时间: 2012-9-28 08:27     标题: vbs中的"Wscript"[属性与方法]

本帖最后由 czjt1234 于 2012-10-25 22:55 编辑

Wscript 对象提供对 Windows 脚本宿主对象模型根对象的访问


属性
Application           当前的应用对象 "Windows Script Host"
Arguments             运行vbs时的参数的集合
BuildVersion          wscript.exe 的内部版本号
FullName              wscript.exe 的完整路径和文件名
Interactive           用户交互模式。默认值为 True
Name                  wscript.exe 的昵称 "Windows Script Host"
Path                  wscript.exe 的完整路径
scriptfullname        当前运行的vbs的完整路径和文件名
ScriptName            当前运行的vbs的文件名
Version               wscript.exe 的版本


方法
ConnectObject         将对象的事件源连接到具有给定前缀的函数??

CreateObject          创建 COM 对象
DisconnectObject      断开已连接对象的事件源的连接??
Echo                  弹出消息框
GetObject             用指定的 ProgID 检索现有的对象或从文件中创建新对象??
Quit                  立即结束vbs
Sleep                 暂停vbs,单位:毫秒
Timeout               延时结束vbs,单位:秒


Wscript 对象的属性、方法,都可以在 Script5.6.chm 里找到参考

-----------------------------------------------------------------------------

Wscript 对象的属性和方法,创建了
WshArguments   对象
WshNamed       对象
WshUnnamed     对象

作者: czjt1234    时间: 2012-9-28 09:10

本帖最后由 czjt1234 于 2012-10-30 12:10 编辑

下面是 Wscript 对象的属性和方法的参数,及用法举例

代码测试环境:winxpsp3 IE8 Wscript版本5.7.0.18066

'-------------------------------------------------------------

Dim strRead, arrArguments, intNumber

strRead = wscript.scriptfullname     '当前运行的vbs的完整路径和文件名
strRead = Wscript.ScriptName         '当前运行的vbs的文件名

strRead = Wscript.FullName           'wscript.exe 的完整路径和文件名
strRead = Wscript.Path               'wscript.exe 的完整路径
strRead = Wscript.Name               'wscript.exe 的昵称 "Windows Script Host"
strRead = Wscript.Application        '当前的应用对象 "Windows Script Host"

strRead = Wscript.Version            'wscript.exe 的版本
strRead = Wscript.BuildVersion       'wscript.exe 的内部版本号

Wscript.Timeout = 5                  '5秒后结束vbs
Wscript.Sleep 3000                   '延时3000毫秒
Wscript.Echo strRead                 '弹出消息框。标题栏 "Windows Script Host"

strRead = Wscript.Interactive        '读取当前的用户交互模式。默认为 True
Wscript.Interactive = True|False     '设定为 False 时,禁用vbs的输入输出命令

'-------------------------------------------------------------

Wscript.Quit (intErrorCode)          '立即结束vbs。intErrorCode为可选返回值



下面是一个批处理调用intErrorCode返回值的例子
'----d:\test.vbs----
Wscript.Quit (99)


'----d:\test.bat----
@echo off
d:\test.vbs
echo %errorlevel%

pause

运行 d:\test.bat 可以看到返回值

'-------------------------------------------------------------

Wsh.Echo Wsh.FullName       'Wscript 可以简写为 Wsh

需要注意的就是如果用 Wsh 做变量,必须先 Dim Wsh 定义变量名

'-------------------------------------------------------------
作者: Demon    时间: 2012-9-28 10:41

Err是VBS内置的,而不是wscript内置的。
作者: czjt1234    时间: 2012-9-28 15:19

本帖最后由 czjt1234 于 2012-10-30 12:16 编辑

WScript 对象的 Arguments 属性创建 WshArguments 对象

WshArguments 对象提供对整个命令行参数集的访问


属性
Item        缺省属性。显示指定的项目
Count       参数的个数
Named       已命名的参数。比如 test.vbs /c:"aaa" 。返回 WshNamed 对象
Unnamed     未命名的参数。比如 test.vbs "aaa" 。返回 WshUnnamed 对象



方法
ShowUsage   在.wsf脚本文件里用以显示使用说明。在.vbs脚本文件里没实际用处


'-------------------------------------------------------------

WshArguments 对象的 Named 属性返回 WshNamed 对象

WshNamed 对象提供对已命名的参数的访问


属性
Item        显示指定的项目
Count       参数的个数



方法
Exists      查询某个命名参数是否存在。返回True|False


'-------------------------------------------------------------

WshArguments 对象的 Unnamed 属性返回 WshUnnamed 对象

WshUnnamed 对象提供对未命名的参数的访问


属性
Item        显示指定的项目
Count       参数的个数



方法
(无)


'-------------------------------------------------------------

下面是 WshArguments WshNamed WshNamed 对象的属性和方法的参数,及用法举例

代码测试环境:winxpsp3 IE8 Wscript版本5.7.0.18066


'-------------------------------------------------------------

新建 d:\test.vbs,代码如下:
Dim objArguments, objArgsNamed, objArgsUnnamed, intNumber

Set objArguments = WScript.Arguments
Set objArgsNamed = objArguments.Named
Set objArgsUnnamed = objArguments.Unnamed

MsgBox "共有参数 "   & objArguments.count   & "个" & vbCrLf & vbCrLf & _
       "命名参数 "   & objArgsNamed.count   & "个" & vbCrLf & vbCrLf & _
       "未命名参数 " & objArgsUnnamed.count & "个"

If objArgsNamed.Exists("C") Then
    MsgBox "命名为 C 的参数: " & objArgsNamed.Item("C")
End If

objArguments.ShowUsage    '弹出一个信息框。没啥用。在.wsf脚本文件里有用

MsgBox "枚举全部参数:"
For intNumber = 0 To objArguments.count - 1
  MsgBox objArguments.Item(intNumber)
Next

MsgBox "枚举未命名参数:"
For intNumber = 0 To objArgsUnnamed.count - 1
  MsgBox objArgsUnnamed.Item(intNumber)
Next


运行命令行
d:\test.vbs /c:CCC /d:"d f" "a s" 1 q
对照运行结果,可以看出vbs命令行参数的含义

'-------------------------------------------------------------




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2