VBS脚本教程二上下.docx

上传人:b****5 文档编号:8001398 上传时间:2023-01-27 格式:DOCX 页数:18 大小:28.69KB
下载 相关 举报
VBS脚本教程二上下.docx_第1页
第1页 / 共18页
VBS脚本教程二上下.docx_第2页
第2页 / 共18页
VBS脚本教程二上下.docx_第3页
第3页 / 共18页
VBS脚本教程二上下.docx_第4页
第4页 / 共18页
VBS脚本教程二上下.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

VBS脚本教程二上下.docx

《VBS脚本教程二上下.docx》由会员分享,可在线阅读,更多相关《VBS脚本教程二上下.docx(18页珍藏版)》请在冰豆网上搜索。

VBS脚本教程二上下.docx

VBS脚本教程二上下

VBS脚本教程二(上)

◎Vbs脚本编程简明教程之九—妙用SendKeys简化重复操作

    每次开机的时候,你想自动登陆你的QQ或者网志吗?

巧妙使用VBS中的SendKeys命令(这个命令的作用就是模拟键盘操作,将一个或多个按键指令发送到指定Windows窗口来控制应用程序运行),可以极大的方便我们的常用操作。

其使用格式为:

Object.SendKeysstring其中:

Object:

为WshShell对象,即脚本的第一行为:

SetWshShell=WScript.CreateObject("WScript.Shell")

将Object替换为WshShell

“string”:

表示要发送的按键指令字符串,需要放在英文双引号中。

它包含如下内容:

.

1.基本键:

一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如要发送字母“x”,使用“WshShell.SendKeys"x"”即可。

当然,也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可,例如,要发送按键“cfan”,可以使用

“WshShell.SendKeys"cfan"”。

2.特殊功能键:

对于需要与Shift、Ctrl、Alt三个控制键组合的按键,SendKeys使用特殊字符来表示:

Shift——+;Ctrl——^;Alt——%

如要发送的组合按键是同时按下Ctrl+E,需要用“WshShell.SendKeys"^e"”表示,如果要发送的组合按键是按住Ctrl键的同时按下E与C两个键,这时应使用小括号把字母键括起来,书写格式为“WshShell.SendKeys"^(ec)"”,这里要注意它与“WshShell.SendKeys"^ec"”的区别,后者表示组合按键是同时按住Ctrl和E键,然后松开Ctrl键,单独按下“C”字母键。

由于“+”、“^”这些字符用来表示特殊的控制按键了,如何表示这些按键呢?

只要用大括号括住这些字符即可。

例如,要发送加号“+”,可使用“WshShell.SendKeys"{+}"”。

另外对于一些不会生成字符的控制功能按键,也同样需要使用大括号括起来按键的名称,例如要发送回车键,需要用“WshShell.SendKeys"{ENTER}"”表示,发送向下的方向键用

“WshShell.SendKeys"{DOWN}"”表示。

如果需要发送多个重复的单字母按键,不必重复输入该字母,SendKeys允许使用简化格式进行描述,使用格式为“{按键数字}”。

例如要发送10个字母“x”,则输入“WshShell.SendKeys"{x10}"”即可。

例一:

WshShell.SendKeys"^{ESC}u".

代码的含义为:

按下Ctrl+Esc组合键(相当于按Win键)打开“开始”菜单,接着按U键打开“关机”菜单。

例二:

让VBS脚本自动在记事本中输入一行文字“hello,welcometocfan”。

DimWshShell

SetWshShell=WScript.CreateObject("WScript.Shell")

WshShell.Run"notepad"

WScript.Sleep2000

//本行的含义为是脚本暂停2秒,给notepad一个打开的时间,有时时间太短可能导致后面的字符无法进入编辑区

WshShell.AppActivate"无标题-记事本

"//AppActivate为寻找可执行程序的标题框,”无标题-记事本”内容你的自己打开看一下

WshShell.SendKeys"hello,welcometocfan"

作业1:

让脚本自动输入下面两段小短句

Thisisthemostwonderfuldayofmylife

becauseI'mherewithyounow

作业2:

让脚本在输入短句后自动关闭记事本,并保存文件名为“test”,注意关闭记事本可以直接使用组合按键Alt+F4来实现

例三:

制作能自动定时存盘的记事本

我们最常用的记事本没有Word、WPS那样的自动定时存盘功能,其实利用VBS脚本再加上SendKeys命令,就能弥补这个遗憾。

打开记事本,输入以下内容(为容易描述和分析,把代码分为四个部分):

'第一部分:

定义变量和对象

DimWshSh.ell,AutoSaveTime,TXTFileName

AutoSaveTime=300000

SetWshShell=WScript.CreateObject("WScript.Shell")

TXTFileName=InputBox("请输入你要创建的文件名(不能用中文和纯数字):

")

'第二部分:

打开并激活记事本

WshShell.Run"notepad"

WScript.Sleep200

WshShell.AppActivate"无标题-记事本"

'第三部分:

用输入的文件名存盘

WshShell.SendKeys"^s"

WScript.Sleep300

WshShell.SendKeysTXTFileName

WScript.Sleep300

WshShell.SendKeys"%s"

WScript.SleepAutoSaveTime

'第四部分:

自动定时存盘

WhileWshShell.AppActivate(TXTFileName)=True

WshShell.SendKeys"^s"

WScript.SleepAutoSaveTime

Wend

WScript.Quit

将其保存为记事本.vbs,以后要使用记事本时,都通过双击这个脚本文件来打开。

程序说明:

这个脚本的基本思路是定时向记事本发送Ctrl+S这个存盘组合键。

第一部分:

定义了脚本中需要用到的变量和对象。

“AutoSaveTime”变量用来设置自动存盘间隔,单位为毫秒,这里设置为5分钟。

“TXTFileName”变量通过输入框取得你要创建的文本文件名称。

.

第二部分:

运行记事本,对于Windows本身提供的程序,比如计算器等,可直接在“WshShell.Run”后输入程序名称,如"calc",对于非系统程序,则可输入完全路径,但要注意使用8.3格式输入,比如“"D:

\Progra~1\Tencent\QQ.exe"”。

第三部分:

这里用SendKeys命令执行了这样的操作流程(请注意每个操作之间延时命令的使用):

在记事本中按Ctrl+S组合键→弹出保存文件的窗口→输入文件名→按Alt+S组合键进行保存(默认保存在“我的文档”目录)。

第四部分:

定时存盘的关键,通过“While……Wend”这个当条件为“真”时循环命令,实现自动存盘代码“WshShell.SendKeys"^s"”和定时代码“WScript.SleepAutoSaveTime”的重复执行。

因为不能让这个定时存盘循环一直执行,退出记事本后,必须自动退出脚本并结束循环,所以设计了一个循环判断条件“WshShell.AppActivateTXTFileName=True”,当记事本运行中时,可以激活记事本窗口,这个条件运行结果为“True”,定时存盘循环一直执行,退出记事本后,脚本无法激活记事本窗口,就会跳出循环,执行“Wend”后面的“WScript.Quit”退出脚本。

例四:

快速登陆QQ软件。

假设QQ号码是:

10001,密码是:

123456,隐身登陆:

setws=wscript.createobject("wscript.shell")

ws.run"C:

\Progra~1\Tencent\QQ\QQ.exe",0

wscript.Sleep2000

ws.AppActivate"QQ用户登录"

ws.SendKeys"7015247"

wscript.Sleep200

ws.SendKeys"{TAB}"

ws.SendKeys"*********"

wscript.Sleep200

ws.SendKeys"{ENTER}"

VBS脚本教程二(下)

例五:

关机菜单立刻显身

打开记事本,输入以下命令,并将其保存为1.vbs:

setWshShell=CreateObject("WScript.Shell")

WshShell.SendKeys"^{ESC}u"

双击运行它,你会发现关机菜单立刻出现了。

将“WshShell.SendKeys"^{ESC}u"”改为“WshShell.SendKeys"^+{ESC}"”,运行一下看看是否打开了任务管理器

妙用SendKeys自动上网并登陆网志

将下面的脚本复制到一个文本文件中,并将其文件名命名为:

自动登陆.vbs,然后将拨号软件及本脚本一起复制到程序——启动项中,就可以实现自动拨号上网,并登陆到网志上。

代码如下:

Setwshshell=CreateObject("wscript.shell")

wshshell.AppActivate"连接MAE-301U拨号连接"

wscript.Sleep20000

wshshell.SendKeys"{enter}"

wshshell.Run"iexplore"

WScript.Sleep2000

wshshell.AppActivate"hao123网址之家---实用网址,搜索大全,尽在-MicrosoftInternetExplorer"'引号中的内容修改为你的浏览器打开后标题栏中的内容

wshshell.SendKeys"%d"

wshshell.SendKeys"

wshshell.SendKeys"{enter}"

WScript.Sleep2000

wshshell.SendKeys"此处修改为网志帐号"

wshshell.SendKeys"{tab}"

wshshell.SendKeys"此处修改为网志密码"

wshshell.SendKeys"{enter}"

'wshshell.SendKeys"%d"

◎Vbs脚本编程简明教程之十—Vbs脚本编程常用的编辑器

1、VBSEDit汉化版

2、primalscript汉化版,可以对30多种脚本进行编辑

◎Vbs脚本编程简明教程之十一—FSO中文件的基本操作

一、文件属性:

在windows中,文件的属性一般用数字来表示:

0代表normal,即普通文件未设置任何属性。

1代表只读文件。

2代表隐藏文件。

4代表系统文件。

16代表文件夹或目录。

32代表存档文件。

1024代表链接或快捷方式。

例如:

setfs=wscript.createobject(“scripting.filesystemobject”)

setf=fs.getfile(“d:

\index.txt”)

msgboxf.Attributes‘attributes函数的作用是显示文件属性

需要说明的是:

msgbox显示的结果往往不是上面说明的数字,而是有关属性代表数字的和。

[作者:

临汾市外事旅游局薛靖澜,转载请注明出处]

二、创建文件:

object.createtextfile方法,注意创建前一般需要检查文件是否存在。

例如:

setfso=wscript.createobject(“scripting.filesystemobject”)

iffso.fileexists(“c:

\kk.txt”)then

msgbox“文件已存在”

else

setf=fso.createtextfile(“c:

\kk.txt”)

endif

如需要强制覆盖已存在的文件,则在文件名后加true参数。

三、复制、移动、删除文件:

使用copyfile方法、movefile方法、deletefile方法。

例如:

setfso=wscript.createobject(“scripting.filesystemobject”)

fso.copyfile“c:

\kk.txt”,”d:

\1\kk.txt”,true//如上文说述,true代表强制覆盖

fso.movefile“c:

\kk.txt”,“d:

\”//移动文件

fso.deletefile“c:

\kk.txt”//删除文件

四、文件的读写:

1、打开文件:

使用opentextfile方法

如:

setts=fso.opentextfile(“c:

\kk.txt”,1,true)

说明:

第二个参数为访问模式1为只读、2写入、8为追加

第三个参数指定如文件不存在则创建。

2、读取文件:

read(x)读x个字符;readline读一行;readall全部读取

如:

setffile=fso.opentextfile(“c:

\kk.txt”,1,true)

value=ffile.read(20)

line=ffile.readline

contents=ffile.readall

3、常见的指针变量:

atendofstream属性:

当处于文件结尾的时候这个属性返回true。

一般用循环检测是否到达文件末尾。

例如:

dowhileffile.atendofstream<>true

ffile.read(10)

loop

atendofline属性:

如果已经到了行末尾,这个属性返回true。

Column属性(当前字符位置的列号)和line属性(文件当前行号):

在打开一个文件后,行和列指针都被设置为1。

4、在文件中跳行:

skip(x)跳过x个字符;skipline跳过一行

5、在文件中写入字符:

可以用2-写入和8-追加的方式来写入

其方法有:

write(x)写入x字符串;writeline(x)写入x代表的一行

writeblanklines(n)写入n个空行

注意:

最后一定要使用close方法关闭文件。

[作者:

临汾市外事旅游局薛靖澜,转载请注明出处]读文件后一定要关闭,才能以写的方式打开。

◎Vbs脚本编程简明教程之十二—使用系统对话框

在VBS脚本设计中,如果能使用windows提供的系统对话框,可以简化脚本的使用难度,使脚本人性化许多,很少有人使用,但VBS并非不能实现这样的功能,方法当然还是利用COM对象。

1、SAFRCFileDlg.FileSave对象:

属性有:

FileName—指定默认文件名;FileType—指定文件扩展名;OpenFileSaveDlg—显示文件保存框体方法。

2、SAFRCFileDlg.FileOpen对象:

FileName—默认文件名属性;OpenFileOpenDlg—显示打开文件框体方法。

3、UserAccounts.CommonDialog对象:

Filter—扩展名属性("vbsFile|*.vbs|AllFiles|*.*");

FilterIndex—指定

InitialDir—指定默认的文件夹

FileName—指定的文件名

Flags—对话框的类型

Showopen方法:

很简单,ok,让我们来举两个简单的例子:

例一:

保存文件

SetobjDialog=CreateObject("SAFRCFileDlg.FileSave")

SetobjFSO=CreateObject("Scripting.FileSystemObject")

objDialog.FileName="test"

objDialog.FileType=".txt"

intReturn=objDialog.OpenFileSaveDlg

IfintReturnThen

objFSO.CreateTextFile(objDialog.FileName&objdialog.filetype)

Else

Wscript.Quit

EndIf

注意:

1、SAFRCFileDlg.FileSave对象仅仅是提供了一个方便用户选择的界面,本身并没有保存文件的功能,保存文件还需要使用FSO对象来完成。

2、用FileType属性来指定默认的文件类型。

3、在调用OpenFileSaveDlg方法时,最好把返回值保存到一变量中,用它可以判断用户按下的是确定还是取消。

例二:

.打开文件

setobjFile=CreateObject("SAFRCFileDlg.FileOpen")

intRet=objFile.OpenFileOpenDlg

ifintretthen

msgbox“文件打开成功!

文件名为:

”&objFile.filename

else

wscript.quit

endif

例三:

比较复杂的打开文件对话框

SetobjDialog=CreateObject("UserAccounts.CommonDialog")

objDialog.Filter="vbsFile|*.vbs"

objDialog.InitialDir="c:

\"

tfile=objDialog.ShowOpen

iftfilethen

strLoadFile=objDialog.FileName

msgboxstrLoadFile

else

wscript.quit

endif

说明:

在脚本中加入objDialog.Flags=&H020看看会出现什么结果。

◎Vbs脚本编程简明教程之十三—WMI基础

WMI即Windows管理规范,是用户管理本地和远程计算机的一种模型。

通过它可以访问、配置、管理和监视几乎所有的Windows资源。

WMI的语法十分简单,基本上常见的命名空间、对象等用几乎一模一样。

它对应的是Windows里的WMI服务(winmgmt)。

一、WMI的起源

几年前,几家资深的计算机公司由于系统管理领域缺少标准,委托DMTF启动了CIM(通用信息模型)项目,理想的CIM是一种不受限制于任何特定实现环境的管理工具。

WMI是CIM的微软实现,它有很多类是从CIM中派生出来的。

二、WMI的命名空间

那么命名空间是做什么作用的呢?

我简单这样说,在同一段代码中,如果有两个变量或函数的名字完全相同,就会出现冲突。

命名空间就是为解决变量、函数的命名冲突而服务的。

解决的办法就是将你的变量定义在一个不同名字的命名空间中。

就好像财政局有个张三,公安局也有个张三,但我们清楚,就是因为他们分属不同的单位。

有些地方可能不太准确,但大致意思就是这样了。

WMI的命名空间创建了一个层次结构,有点类似于我们的目录文件结构。

1、root-作为所有其他名字的占位符;

2、root\default-与注册表操作有关的类;

3、root\security-与系统安全有关的类;

4、root\cimv2-从CIM派生的类,代表我们最常用的工作环境。

三、WMI的对象路径

WMI的对象路径用来在CIM库中定位类和它的事例,对象路径用两个反斜杠\\开头,第一个元素是目标计算机的名字,第二个元素是相应的WMI命名空间,第三个元素是相应的类名,并用:

将它与命名空间分隔开来。

例如:

\\..\root\cimv2:

win32_service

其中那个.代表是本地系统。

四、WMI的查询语言——WQL仅仅是ANSISQL的一个子集,只能用于数据的提取。

数据、事件查询的基本语法为:

Selectpro1,pro2,pro3frommyclass(myclassevent)

例如:

Selectname,pathfromWin32_share说明:

列出所有共享的名称和路径

也可以使用通配符*,例如:

Select*fromWin32_share

关键字Where用于限定查询的范围。

例如:

Select*fromWin32_sharewherename=”Admin”

五、WMI脚本中使用的三个步骤

步骤1:

连接到WMI服务

在任何WMI脚本中,第一个步骤都是建立一个到目标计算机上的Windows管理服务的连接。

方法是调用[作者:

临汾市外事旅游局薛靖澜,转载请注明出处]VBScript的Getobject函数并将WMI脚本库的名字对象的名称(即“winmgmts:

”,后跟目标计算机的名称)传递到Getobject,并返回一个对象的引用,此时,您就可以调用其提供的方法如:

InstancesOf,正如方法名所示,InstancesOf返回由资源的类名标识的托管资源的所有实例。

步骤2:

检索WMI托管资源的实例

一般采用WQL来实现。

步骤3:

显示WMI托管资源的属性

最后一个步骤是枚举检索得到集合的内容。

一般采用

Foreachenuminmyclass

Next结构来实现。

六、WMI测试器(wbemtest.exe)验证脚本执行结果

现在,您对可用于浏览和查看CIM的工具已经有了一些认识,让我们使用WMI测试器(wbemtest.exe)来检查Win32_Process类定义,以便从在您的本地计算机上运行的进程检索一些属性。

1.打开一个命令提示,键入C:

\>wbemtest.exe,按下Enter来开始WMI测试器工具。

请注意,大部分按钮在主WMI测试器窗口上是被禁用的,这说明此时您没有连接到WMI。

2.单击“连接”按钮连接到本地或远程计算机上的WMI服务。

显示“连接”对话框,它提供一个标记为名称空间的文本输入区域,该区域默认值为root\default。

将名称空间区域的值更改为root\cimv2,单击“连接”对话框的连接按钮返回到主WMI测试器窗口。

3.主窗口中左上角的命名空间标识符应该显示为root\cimv2。

请注意,所有的按钮现在都已启用,这说明在当前凭据环境下,您已经成功连接到本地主机上的WMI。

单击枚举类别打开“超类信息”对话框。

4.在“超类信息”对话框中,不要填写输入超类别名称区域,单击递归选项,单击确定以枚举root\cimv2名称空间中定义的所有CIM类。

请注意,列于“查询结果”对话框顶部的类是以两个下划线为开头的。

这些是系统类。

系统类是预定义的CIM类,支持内部WMI配置与操作,例如提供程序注册、命名空间安全性及事件通知等。

现在,忽略系统类,向下滚动“查询结果”对话框直至看到以CIM_开头的类。

名称以CIM_开头的类是由DMTF维护的核心与公共基类。

继续向下滚动直至到达以Win32_开头的类。

名称以Win32_开头的类是Microsoft扩展类,表示Wind

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1