windows脚本语言之vbs前置知识介绍

总体结构图

Windows脚本宿主(WSH)

Windows脚本宿主(Windows Scripting Host,WSH)是微软脚本技术系列中的一种,简单讲,就是提供了一种脚本环境,在这个环境中,预定义了一些对象,同时也可以使用组件对象模型(COM)里的其他对象。他使用一种脚本引擎来对脚本解释执行,微软自己支持VBSCRIPT和JSCRIPT,第三方也可以开发自己的脚本引擎。

具体点,就是你先编好一些脚本文件(微软自带例子若干,后缀.vbs或 .js),然后用一个程序对他解释执行,这个程序就叫Windows Scripting Host,程序的名字是Wscript.exe(或者命令行的Cscript.exe),你可以查看一下你的机器里有没有这两个文件,就知道有没有WSH了。这非常像批处理文件,只不过文件里不是命令行,而是脚本语言写的脚本。同时,他完成的功能也非常像批处理文件,只不过多了些控制。

我主要用WSH来完成一些繁琐的、通常需要我反复操作才能完成的任务,比如给大量目录设置ACL,或者创建大量的目录等等。虽然这也可以编写VB或VC程序来实现,不过比起脚本来,实在麻烦,至少需要那么大的环境,而脚本只要一个写字板就成。用WSH技术来配置服务器,包括创建用户,创建邮箱,创建目录,创建站点,设置ACL,设置FrontPage ServerExtention,我将在WSH实用讲座中分几讲详细介绍。

Wscript

Wscript 作为 Wscript 公开给脚本引擎。

WScript 对象是 Windows 脚本宿主对象模型层次结构的根对象。它可在任何脚本文件中使用,不需要特定的声明

描述:提供对 Windows 脚本宿主对象模型根对象的访问。

详述:WScript 对象是 Windows 脚本宿主对象模型层次结构的根对象。它可在任何脚本文件中使用,不需要特定的声明。

WScript 对象提供对以下信息的访问命令行参数, 脚本文件的名称,宿主文件名, 宿主版本信息。

WScript 对象可用来创建对象,连接对象, 与对象断开连接, 同步事件, 以编程方式停止脚本的执行,将信息输出到默认输出设备(Windows 对话框或命令控制台)。

WScript 对象也可用来设置脚本运行的模式(交互模式或批处理模式)。

就像刚才我们说的一样,对象通过两种其自有的特性想我们提供工具,这两种特性分别是“属性”和“方法”。

利用它可以创造两种COM对象:WshShell 与 WshNetwork .

WScript

属性

- Arguments

描述:用于返回 Arguments 对象(这个对象我们以后会学,现在只需要了解就行)。

语法:object.Arguments

参数:object ,WScript 对象

例子:显示本vbs文件运行的参数

Set Arg = WScript.Arguments

For i = 0 To Arg.Count - 1

MsgBox Arg(i)

Next

将上面这些代码保存为vbs文件,然后将一个或者数个任意的文件拖放到这个vbs文件上面上,那么他会逐个显示你拖放的文件。(这仅仅给出了一个实例,用到了Arguments对象,其的具体用法我们以后再了解)

- FullName

描述:返回主机可执行文件(CScript.exe 或 WScript.exe)的完全限定路径。

语法:object.FullName

参数:object ,WScript 对象

例子:显示本机wscript的路径

MsgBox wscript.fullname

在默认的情况下会显示'C:\WINDOWS\system32\wscript.exe'

- Interactive

描述:设置或确定脚本模式。

语法:object.Interactive

参数:object ,WScript 对象

说明:Interactive 属性返回一个布尔值。

有批处理和交互两种模式。在交互模式(默认模式)下,该脚本为用户提供交互功能。启用对 Windows 脚本宿主的输入和输出。该脚本可以将信息显示在对话框中并等待用户提供反馈。在批处理模式下,不支持这种类型的用户交互,所有对 WSH 的输入和输出被禁用。还可以使用 Windows 脚本宿主命令行开关 / / I(对于交互式)和 / / B(对于批处理模式)来设置脚本模式。

例子:显示本机的脚本模式

MsgBox WScript.Interactive

- Name

描述:返回 WScript 对象(主机可执行文件)的名称。

语法:object.Name

参数:object ,WScript 对象

例子:

MsgBox WScript.name

- Path

描述:返回包含主机可执行文件(CScript.exe 或 WScript.exe)的路径名称

语法:object.Path

参数:object ,WScript 对象

例子:

MsgBox WScript.Path

如果你的wscript.exe是在”C: \ WINDOWS \ system32 \ wscript.exe“那么本属性会显示”C: \ WINDOWS \ system32“

- ScriptFullName

描述:返回当前运行脚本的完整路径。

语法:object.ScriptFullName

参数:object ,WScript 对象

例子:显示本vbs的完整路径

MsgBox WScript.ScriptFullName

神奇吧,这个vbs竟然知道他自己的名字。

- ScriptName

描述:返回当前运行脚本的文件名。

语法:object.ScriptName

参数:object ,WScript 对象

说明:刚才我们知道了用ScriptFullName可以获取vbs文件自身的完整路径,加入你只想要这个文件的名字改怎么办?看例子。

例子:显示本VBS文件的名字

MsgBox WScript.ScriptName

怎么样?看到了吗?

- Version

描述:返回 Windows 脚本宿主的版本。

语法:object.Version

参数:object ,WScript 对象

例子:显示本机脚本宿主版本

MsgBox WScript.version

- 方法

- CreateObject

描述:创建一个对象

语法:CreateObject(appname.objecttype,[servername])

解释:appname 必需的,Variant(字符串)。提供该对象的应用程序名。

objecttype 必需的;Variant(字符串)。待创建对象的类型或类。

servername 可选的; Variant (String). 要在其上创建对象的网络服务器名称。

说明:要创建 ActiveX 对象,只需将 CreateObject 返回的对象赋给一个对象变量:

Set ExcelSheet = CreateObject('Excel.Sheet')'的引用。

每个支持自动化的应用程序都至少提供一种对象类型。

例如,一个字处理应用程序可能会提供 Application 对象,Document 对象,以及 Toolbar 对象。要创建 ActiveX 对象,只需将 CreateObject 返回的对象赋给一个对象变量:

'声明一个对象变量来存放该对象

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject('Excel.Sheet')

'设置 Application 对象是 Excel 可见

ExcelSheet.Application.Visible = True

'在表格的第一个单元中写些文本

ExcelSheet.Cells(1, 1).Value = 'This is column A, row 1'

'将该表格保存到 C:\test.xls 目录

ExcelSheet.SaveAs 'C:\ TEST.xls'

'使用应用程序对象的 Quit 方法关闭 Excel。

ExcelSheet.Application.Quit

'释放该对象变量

Set ExcelSheet = Nothing

上述代码将启动该应用程序创建该对象,在本例中就是创建一个 Microsoft Excel 电子数据表。对象创建后,就可以在代码中使用自定义的对象变量来引用该对象。在下面的示例中,可以使用对象变量 ExcelSheet 来访问新建对象的属性和方法,以及访问 Microsoft Excel 的其它对象,包括应用程序对象和单元格集合。

- GetObject

描述:从文件中检索一个 Automation 对象, 或检索strProgID 参数所指定的对象

语法:object.GetObject(strPathname [,strProgID], [strPrefix])

参数:object必选项。WScript 对象。

strPathname必选项。包含要获取的对象的完整路径和名称。

strProgID可选项。表示对象的程序标识符(ProgID)的字符串。

strPrefix可选项。如果指定了参数 strPrefix,Windows 脚本宿 主将在创建对象之后把对象的输出接口与脚本文件连接起来。在对象中触发事件时,Windows 脚本宿主将调用一个子例程,其名称包括 strPrefix 和事件的名称。

例如,如果 strPrefix 为 'MYOBJ_',对象产生的事件为 'OnBegin,',那么 Windows 脚本宿主将调用脚本中的 'MYOBJ_OnBegin' 子例程。

说明:如果当前存在对象的实例或者希望使用已经被装载的文件创建对象,可使用 GetObject 方法。如果当前不存在实例,而且不希望从已经装载的文件中启动对象,请使用 CreateObject 方法。

如果一个对象将自己注册为单实例对象(例如,Microsoft Word 7.0 中的 Word.Basic 对象),那么无论执行 CreateObject 多少次也只能创建对象的一个实例。此外,对于单实例的对象,如果用零长度的字符串语法('')调用,GetObject 总是返回同样的实例,而且如果省略路径参数将导致错误。使用 GetObject 不能获得对 Visual Basic 4.0 以及以前版本创建的 Microsoft Visual Basic(R)类的引用。

GetObject 适用于所有的 COM 类,不受创建对象所用语言的限制。

示例:在执行下列代码时,与指定的 strPathname 相关联的应用程序被启动,指定文件中的对象被激活。 如果 strPathname 是一个零长度的字符串 (''), GetObject 将返回指定类型的新对象实例。如果 strPathname 参数完全被省略,GetObject 将返回指定类型的当前活动对象。如果不存在指定类型的对象,将发生错误。

Dim MyObject As ObjectSet MyObject = GetObject('C:\CAD\SCHEMA.CAD')MyApp = MyObject.Application

某些应用程序允许激活一个文件的某些部分。如果要这样做,需要在文件名后添加一个惊叹号 (!),然后跟一个字符串,标识出文件中希望被激活的部分。关于如何创建该字符串的信息,请参阅创建对象的应用程序的有关文档。

例如,在一个绘图应用程序中,文件中存储的一幅图可能包含多层。可以使用下面的代码激活绘图文件中称为 schema.cad 的一层:

Set LayerObject = GetObject('C:\CAD\SCHEMA.CAD!Layer3')

如果不指定对象的类,COM 将根据所提供的文件名来确定要启动的应用程序和要激活的对象。但是,某些文件可能支持多个对象类。例如,一幅图纸可能支持三种不同类型的对象:一个应用程序对象,一个绘图对象,以及一个工具栏对象,它们都是同一个文件的组成部分。

在下例中,FIGMENT 是一个绘图应用程序的名称,DRAWING 是它支持的对象类型之一。

Dim MyObject As ObjectSet MyObject = GetObject('C:\DRAWINGS\SAMPLE.DRW', 'FIGMENT.DRAWING')

- Quit

描述:退出执行,返回指定的错误代码。

语法:object.Quit [intErrorCode]

解释:object 必选项。 WScript 对象。

intErrorCode可选项。如果包含此参数,WScript 将把它作为进程终止码返回。如果省略了 intErrorCode,WScript 将返回零 (0) 作为进程终止码。

例子:

下例退出执行并返回错误代码 1:

WScript.Quit

- Sleep

描述:使脚本进程在指定的毫秒数内处于非活动状态,然后继续执行。

语法:object.Sleep(intTime)

参数:object必选项。WScript 对象。

intTime脚本进程在非活动状态的时间长度,以毫秒为单位。

说明:在睡眠状态下,脚本将继续执行所处理的事件。如果脚本引擎超时或被中断,睡眠将立即结束。

例子:

wscript.sleep(3000)

Set apprun = CreateObject('wscript.shell')

apprun.run '%windir%\notepad.exe'

此例子将会延迟3秒启动记事本。

- timeout

描述:设置脚本的生存时间

语法:wscript.timeout

例子:

wscript.timeout = 10

MsgBox 'hello'

- Echo

描述:将输出发送到对话框或控制台。

语法:object.Echo [Arg1] [,Arg2] [,Arg3] ...

参数:object必选项。WScript 对象。

Arg1, Arg2, Arg3 ...所显示的项的列表。

说明:如果宿主为 WScript.exe,本方法将把输出显示在对话框中;如果宿主为 CScript.exe,结果将显示在控制台上。每一项将被一个空格隔开。 在 CScript.exe 下,输出的末尾被加上换行符。如果未提供任何项,显示的将是空行。

例子:

Set fso = CreateObject('scripting.filesystemobject')

Set f = fso.OpenTextFile('c:\test.txt')

wscript.echo f.ReadAll

将会显示这个文件里面的所有内容。这么看来,他的功能跟msgbox一样,不过不如他强大。

- ConnectObject

描述:将一个对象事件源连接到具有给定前缀的函数。

语法:object.ConnectObject strObject, strPrefix

参数:object必选项。WScript 对象。

strObject要连接的对象的名称。

strPrefix事件函数的前缀。

说明:

对象必须能够枚举自己类的事件集合。

例子:下例实例化了一个假想的对象,并将其连接到脚本文件。然后脚本调用该对象的 'SomeMethod' 方法。如果对象中发生了名为 'Event'的事件,将调用 MyEvent_Event 子例程。

Set MyObject = WScript.CreateObject('SomeObject')MyObject.SomeMethodWScript.ConnectObject MyObject, 'MyEvent'Sub MyEvent_Event(strName)WScript.Echo strNameEnd SubWScript.DisconnectObject MyObject

- DisconnectObject

描述:将原先与 Windows 脚本宿主连接的对象断开。

语法:object.DisconnectObject obj

参数:object必选项。WScript 对象。

obj要断开连接的对象的名称。

说明:

如果所指定的对象尚未被连接到 Windows 脚本宿主,则此方法不起任何作用。

例子:

下例创建了一个假想的对象并将其连接到脚本文件。然后脚本调用对象的 'SomeMethod' 方法。如果对象中发生名为 'Event' 的错误,MyEvent_Event 子例程将被调用。

Set MyObject = WScript.CreateObject('SomeObject', 'MyEvent')MyObject.SomeMethodSub MyEvent_Event(strName)WScript.Echo strNameEnd SubWScript.DisconnectObject MyObject

WshArguments

WshArguments 未公开;通过 Wscript.Arguments 属性访问。

WshShell

Wshshell 是一个对象,存放在windows系统中的wshom.ocx文件 中,可供在windows上运行的程序调用。他可对windows的外壳程序进行访问。

代码 Set ws = createobject('WScript.Shell') 得到对象ws,即Wshshell,是一个对象。

功能:

Ws能够实现模拟键盘,向激活窗口发送键值实现选择,谈出定时对话框,读写注册表,启动程序,创建快捷方式等等功能。

详细用法:
https://baike.baidu.com/item/wscript.shell/7752223?fr=aladdin

- 属性

- CurrentDirectory

返回或改变该当前目录

- Environment

返回WshEnvironment对象

- SpecialFolders

使用WshSpecialFolders对象对windows shell文件夹进行访问。

- 方法

- AppActivate

判断窗口是否被激活

窗口激活经常在自动化测试中需要用到,特别是需要测试对象出现后再做的激活,往往需要一定的等待时间。如果此时使用循环结构进行判断窗口是否激活,可以节省时间。Ws提供了一个非常有用的功能(即方法,不知一个人觉得功能比方法更贴切吧)

语法: Ws.AppActivate(title)

参数title:为需要激活窗口的titile属性值,也就是标题或者ProcessID

返回值:布尔值。如果激活了返回True,未激活返回False

- CreateShortcut

创建并返回WshShortcut对象

- ExpandEnvironmentStrings

扩展Progress环境变量并返回结果字符串

- Popup

显示包含指定消息的消息窗口

在弹窗内显示文本信息,即实现定时提示框的作用。

语法:i=Ws.Popup('text' ,'int','title','nType')

参数:text是弹窗文本内容,int是弹窗最长显示时间秒,title弹窗标题,nType是是弹窗显示按钮和图标类型的数值

返回值:用户单击以解除弹窗的按钮值

例程:YN=Ws.Popup('你去过香格里拉吗“,“20”,“经历”,'2')

- RegDelete

删除注册表某目录

- RegRead

读取注册表某目录

- RegWrite

编辑注册表某目录

- Run

启动程序

启动windows自带的软件。如记事本

例程:Ws.Run 'Notepad'

功能:运行记事本

- SendKeys

发送字符串或一些特殊的键盘字符

主要用在对象无法识别时,又要在此对象内输入字符串,即可用此法。又或需要用快捷键时,也可用此法。

语法:Ws.sendkeys string[,wait]

参数: string为指定要发送的字符串或特殊字符。wait可选,指定等待的方式。

例程:Ws.sendkeys '我去过才怪”

- 一些keys的使用

空格键 ' '

退格键 {BACKSPACE} 或 {BS} 或 {BKSP}

BREAK {BREAK}

DELETE {DELETE} 或 {DEL}

向下键 {DOWN}

向上键 {UP}

向左键 {LEFT}

向右键 {RIGHT}

END {END}

ENTER {ENTER} 或 ~

ESC {ESC}

TAB {TAB}

CAPS LOCK {CAPSLOCK}

HELP {HELP}

HOME {HOME}

INSERT {INSERT} 或 {INS}

NUM LOCK {NUMLOCK}

PAGE DOWN {PGDN}

PAGE UP {PGUP}

PRINT SCREEN {PRTSC}

SCROLL LOCK {SCROLLLOCK}

F1 {F1}

F2 {F2}

F3 {F3}

F4 {F4}

F5 {F5}

F6 {F6}

F7 {F7}

F8 {F8}

F9 {F9}

F10 {F10}

F11 {F11}

F12 {F12}

要发送由常规键击和 SHIFT、CTRL 或 ALT 组合而成的键盘字符,请创建表示该键击组合的复合字符串参数。可通过在常规键击之前添加一个或多个以下特殊字符来完成上述操作:

SHIFT +

CTRL ^

ALT %

WshNetwork

ProgID 是 Wscript.WshNetwork。

WshShortcut

未公开;通过 WshShell.CreateShortcut 方法访问。

WshUrlShortcut

未公开;通过 WshShell.CreateShortcut 方法访问。

WshCollection

未公开;通过
WshNetwork.EnumNetworkDrives 或
WshNetwork.EnumPrinterConnection 方法访问。

WshEnvironment

未公开;通过 WshShell.Environment 属性访问。

WshSpecialFolders

未公开;通过 WshShell.Folder 属性访问。

概念介绍

CLSID

CLSID 是windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件分配的一个唯一表示它的代码。为Class ID的缩写。

ProgID

每一个COM组件都需要指定一个 CLSID,并且不能重名。它之所以使用16个字节,就是要从概率上保证重复是“不可能”的。但是,微软为了使用方便,也支持另一个字符串名称方式,叫 ProgID。

由于 CLSID 和 ProgID 其实是一个概念的两个不同的表示形式,所以我们在程序中可以随便使用任何一种。

实例--调用windows自带截图工具实现一键截图

Dim WshShell, oExec Set WshShell = WScript.CreateObject('WScript.Shell')Set oExec = WshShell.Exec('''C:\windows\system32\SnippingTool.exe''')WScript.Sleep 150WshShell.SendKeys '^n'
(0)

相关推荐

  • cscript和wscript之间的区别

    Windows Script Host (WSH) has been part of Windows since Windows NT4. Windows Script Host provides a ...

  •  Wscript.shell 详解

    Wscript.shell Wscript.shell是Wshshell的ProID Wshshell 是一个对象,存放在windows系统中的wshom.ocx文件 中,可供在windows上运行的 ...

  • VBS基础篇

    一.wscript对象 描述:提供对 Windows 脚本宿主对象模型根对象的访问. 详述:WScript 对象是 Windows 脚本宿主对象模型层次结构的根对象.它可在任何脚本文件中使用,不需要特 ...

  • shell和shell脚本语言介绍 Linux运维

    Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具.Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚本内容.每个合格的Linux系统管理员或运维工程 ...

  • 【转发】营养性贫血(及相关疾病)病例与知识介绍

    之前说明过,除了本公众号,小编现在还是微信公众号"检验细胞形态学之家"的秘书之一.故本文也是给"形态学之家"平台做推广. 巨幼细胞性贫血(MgA) 一.简要病史 ...

  • 食品过期一天就不能吃?全网最详细的保质期知识介绍

    全网最详细的保质期知识 本篇,为你揭秘 馨馨 QC,「刚过期一天」的食物能吃吗?吃「过期一天」的食品和吃「还有一天过期」的食品,到底有什么区别? 答案很简单: QC菌 如果这个食品是短保质期食物,那「 ...

  • 光学基座对中器校正和光学基座基础知识介绍。

    光学基座是精密的光学仪器,因配合棱镜和RTK使用,故而又叫棱镜基座.RTK基座等.光学基座厂家生产的产品一般由底座.对中器组成,棱镜和RTK若使用,需要另行说明. 监测测绘环境的恶劣,光学基座的材质也 ...

  • 有关电脑机械硬盘相关的冷知识介绍

    硬盘是电脑中最重要的存储设备,其好坏关系到数据的读取速度,以及用户资料的安全性,目前最常用的硬盘为机械硬盘.那么有关机械硬盘的冷知识了解多少呢?接下来一起来聊聊很多用户不知道的硬盘冷知识 从应用领域分 ...

  • 琥珀知识介绍

    天然琥珀对乙 醚和各种溶剂的反应很弱,由柯巴树脂制成的仿制品,对乙 醚和丙酮(指甲油去光水)产生反应.在很短的时间里表面会变得无光泽和变粘.柯巴树脂有强烈的香味.用热针头接触柯巴树脂时,它会熔化,粘在 ...

  • 后处理TCL脚本语言:命令、脚本文件、值

    一.UG/Post的开发方法与使用的工具: UG/Post的开发,其核心是TCL语言的运用.TCL是Tool Command Language的缩写,英文发音为tickle,中文名叫工具命令语言,是一 ...

  • 机顶盒基本知识介绍

    数字电视机顶盒的基本知识介绍1.机顶盒(STB, Set-Top-Box)简介利用有线电视网络作为传输平台,电视机作为用户终端,以提高现有电视机的性能或增加其功能.它属于信息家电的一种,能让用户在现有 ...

  • 收藏!西门子SCL语言编程,常用指令介绍

    蓝字 '玩转PLC工业机器人" 关注我们哦! 玩转PLC工业机器人 垂直PLC领域,定期分享工业机器人.PLC.变频器.模拟量.定位控制.通信控制.HMI.行业资讯等工控技术,为广大工控人提 ...