VBS脚本教程二上下.docx
- 文档编号:8001398
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:18
- 大小:28.69KB
VBS脚本教程二上下.docx
《VBS脚本教程二上下.docx》由会员分享,可在线阅读,更多相关《VBS脚本教程二上下.docx(18页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBS 脚本 教程 上下