vbs使用
在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳
动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许
你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文
本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你
经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起
来……。这些事情重复、琐碎,使人容易疲劳。
第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往
事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来
的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是
因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机(?)吗?
Vbs是一种Windows脚本,它的全称是:MicrosoftVisualBasicScript
Editon.(微软公司可视化BASIC脚本版),VBS是VisualBasic的的一个抽象子集,
是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows
系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但
是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动
化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。
我个人认为Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机
程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方
便的地方就是提供了对COM对象的简便支持。那么什么是COM对象呢?我这
样理解,COM对象就是一些具有特定函数功能项程序模块,他们一般以ocx或
者dll作为扩展名,你只要找到包含有你需要的功能的模块文件,并在脚本中规
范的引用,就可以实现特定的功能,也就是说Vbs脚本就是调用现成的“控件”
作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等
等麻烦。说白了,我不是觉得拔猪毛麻烦么?我发觉xx机(比如真空离心器)
有一个功能可以实现脱毛,ok,我把它拿来给猪脱毛。什么?大材小用?太浪
费资源了?天哪,那是计算机芯片的事情,死道友不死贫道,反正我的事情是方
便快速的解决了,这就行了。
最方便的是它甚至不需要专门的开发环境,在你的计算机中,只要有notepad,
就可以编写Vbs脚本了,并且可以直接执行。就像多数计算机教程一样,我们
从“HelloWorld!”程序开始我们的练习。什么?不知道是什么意思?就是说
大部分的计算机程序设计教程开篇入门都是编写一个小程序,执行这个程序的
结果就是在计算机的屏幕上或者dos窗口中显示一行文字:HelloWorld!好了,
我们开始吧。
打开你的“记事本”程序,在编辑窗口填写:
msgbox"HelloWorld!"
然后用鼠标单击“文件”菜单,单击“保存”,把“保存在”一栏设为桌
面,在“文件名”一栏中填写,单击“保存”就可以了。然后最小化“记
事本”窗口,在桌面上寻找你刚刚保存的,然后双击。看到弹出的对话
框了没有,单击“确定”,对话框消失了。难看了点,不过确实是你编写的第一
个脚本程序。
说明之一:上面的操作中,保存位置放在桌面,仅仅是为了执行方便,你保
存到其它的地方完全没有问题,只要你知道你保存在什么地方就可以了,什么?
是废话,自己保存的当然知道保存在那里了。不,自己保存的文件自己找不到的
人我见的多了去了。文件名你可以随意填写,不一定非要写kk,只要符合
Windows的文件命名规则就可以了,但是扩展名必须是vbs,什么?不知道什么
是扩展名?就是文件名中“.”后的那部分,简单说,就是vbs脚本文件命名时
必须是:,其中xxx你随意。
说明之二:在记事本编辑窗口中写的这行是什么意思?Msgbox是VBS内
建的函数,每一个函数都可以完成一定的功能,你只需要按照语法要求,在函数
的相应部分填写相应的内容就可以了,这部分内容我们称为参数,当然函数执行
的结果我们称为返回值,一个函数可以有返回值也可以没有,可以有参数也可以
没有。你不用了解函数是怎么运作的,只要了解这个函数能干什么就行了。
Msgbox语法:msgbox"对话框内容",,"对话框的标题"
你不妨用记事本打开刚才的文件在编辑窗口中输入:
msgbox"HelloWorld!",,"系统提示"
执行一下,看看效果和位置。
说明之三:如果执行失败,看看你的
当然,这个脚本实在是太简单了,甚至连最简单的交互都没有,所以你可以
把脚本这样修改一下:
Dimname
name=Inputbox("请输入你的名字:","名称")
Msgboxname,,"您的名字是"
保存执行一下,看到弹出的对话框了么?填入你的名字,点确定,看到结果了吗?
说明之一:第一句是定义变量,dim是定义变量的语句
其格式为:dim变量1,变量2……,
Vbs只有一种变量类型,所以不用声明变量类型。系统会自动分辨变量类型。
说明之二:inputbox是VBS内建的函数,可以接受输入的内容,其语法格式为:
Inputbox("对话框内容","对话框标题")
第二句的意思是接受用户的输入,并把输入结果传递给变量name。
好了,到此脚本基本的输入输出函数都有了,已经可以完成一些比较简单的功能
了,你可以编写一个简单
的脚本,然后拷贝的“程序”—>“启动”中,然后重新启动计算机看看结果.
Vbs脚本编程简明教程之三——Vbs的基本语法(牢记)
VBScript基础知识
(1)、变量
1、所有单引号后面的内容都被解释为注释。
2、在VBScript中,变量的命名规则遵循标准的命名规则,需要注意的是:在
VBScript中对变量、方法、函数和对象的引用是不区分大小写的。在申明变量时,
要显式地申明一个变量,需要使用关键字DIm来告诉VBScript你要创建一个变
量,并将变量名称跟在其后。申明多个同类型变量,可以用逗号分隔。注意:
VBScript中不允许在申明变量的时候同时给变量赋值。但是允许在一行代码内同
时对两个变量进行赋值,中间用冒号分隔。
3、你可以使用OptionExplicit来告诉宿主变量必须先声明后使用。
4、VBScript在定义时只有一种变量类型,在实际使用中需要使用类型转换函数
来将变量转换成相应的变量类型。
Cbool函数将变量转换成布尔值;
Cbyte函数将变量转换为0到255之间的整数。
Ccur函数、Cdbl函数和Csng函数将变量转换为浮点数值,前者只精确到小数点
后四位,后两者要更加精确,数值的范围也要大的多。
Cdate函数将变量转换为日期值。
Cint函数和Clng函数将变量转换为整数,后者的范围比前者要大的多。
Cstr函数将变量转换为字符串。
(2)、数组
数组的定义与变量非常类似,只需要在变量后描述这个数组的个数和维数。
需要注意的是:数组的下标总是从0开始,而以数组定义中数值减一结束。也就
是说你以要定义一个有十个数据的数组,将这样书写代码:dImarray(9),同
样,当你要访问第五个元素时,实际的代码是array(4)。当然,你可以通过不指
定数组的个数和维数来申明动态数组。等到数组的个数和维数固定后,使用关键
字redim来改变数组。注意,在改变数组的大小时,数组的数据会被破坏,使用
关键字prerve来保护数据。例如:RedIm空格prerve空格array括号个数逗
号维数括号。
(3)、操作符
在VBScript运算符中,加减乘除都是我们常用的符号,乘方使用的是^,取模
使用的Mod。在比较操作符中,等于、小于、大于、小于等于、大于等于都与
我们常用的符号是一致的,而不等于是小于和大于连用。
逻辑运算符为:和操作—>AND非操作—>NOT或操作—>OR;
你可以使用操作符+和操作符&来连接字符串,一般使用&操作符;
另外还有一个比较特殊的操作符Is用来比较对象,例如按钮对象,如果对象是
同一类型,结果就是真,如果对象不是同一类型,结果就是假。
(4)、条件语句主要有if……then语句和lect......ca语句两种形式
在if……then语句中,其基本形式为:
If条件then
处理条件的语句;
……
Endif
基本形式只能对单个条件进行验证,如果有两个条件,则需要在基本形式中添加
单行语句el,如果还有更多的条件需要验证,则需要添加语句
Elif条件then
处理条件语句
如下:
If条件then
处理条件的语句;
elif条件then
处理条件的语句;
……
Endif
在lect......ca语句中,其基本形式为:
Selectca变量
Ca条件值
处理条件语句
并对上两句进行重复
最后一句应为
cael
处理语句
当然不要忘记将条件结束语句Endlect放在最后一行
注意:在执行字符串比较时,需要特别注意大小写,一般情况下,我们在比较前,
使用lca函数将字符串转换成小写,使用uca函数将字符串转换成大写大写。
(5)、循环控制语句
循环控制语句有for……next循环、for……each循环、do……while循环、do……
until循环、while循环五种形式。
在使用循环控制语句前,首先要对循环条件进行判断,如果循环次数是有固定次
数的,那么使用For……next循环,其结构为:
For计数器变量=开始计数值to最后计数值
执行循环体
Next
如果是需要对数组或对象集合中的每一个元素进行判断,则需要使用for……
each循环,其结构为:
Foreach循环计数变量in要查看的对象或数组
执行处理语句
Next
注意:在上述两种循环中随时可以使用exitfor来退出循环
如果你希望在条件满足时执行一段代码则使用do……while语句,结构为:
Dowhile条件
执行循环体
Loop
如果你希望在条件不满足时执行代码,则使用do……until语句,结构为:
Dountil条件
执行循环体
Loop
当然,在这两种循环语句中,你可以使用exitdo来退出循环
最后一种循环语句是条件满足时一直执行循环,
While条件
执行循环体
Wend
(6)、使用过程
常用的过程有两种,一种为函数,给调用者返回值,一种为子程序,无返回值,
还有一种叫事件的特殊子程序,用的比较少。
函数的基本定义方法为:
Function函数名称(参数列表)
函数代码
函数名称=某值‘用来返回值
endfunction
子程序一些都类似,不过没有返回值
注意:尽管在定义子程序的时候,参数列表要加括号,但在调用子程序的时候,
参数列表不加括号,括号只在函数中使用。另外,子程序不能在表达式中使用。
而函数只能出现在赋值语句的右边,或者表达式中,函数不能直接使用,如果必
须直接使用函数,则必须使用call语句调用,并取消返回值
◎Vbs脚本编程简明教程之四——如何利用Vbs运行外部程序?
Vbs只提供了编程的一个基本框架,用户可以使用Vbs来定义变量、过
程和函数,vbs也提供了一些内部函数和对象,但是Vbs没有提供任何命令来访
问Windows系统内部的部件,但是值得庆幸的是,Vbs虽然不能自己完成这些
任务,但是它提供了一条极为方便、功能也相当强的命令——CreateObject,这
条命令可以访问windows系统内安装的所有com对象,并且可以调用这些部件
中存放的命令。于是问题解决了,比如说我手头有1000个小文本,我首先要对
每一个文本的语法进行查错和修改,然后按照预先定义好的规则对这些文本进
行排序,最后将这些文本合并成为一个文件。正常情况下,我们需要把打开第一
个小文本,然后把它复制到WORD中,然后利用里面的除错功能进行除错和修
改,然后再导入到EXCEL中进行排序,将这个过程重复1000遍,然后再将所
有得到的文本复制到一个大文本中。实在是太枯燥、工作量太大了。有了Vbs
和CreateObject,问题得到解决,我只需要找到相应的模块,调用相应的功能就
可以了,作为脚本,把一个枯燥的过程重复1000次,本就是它的拿手好戏。好
了,我们走入正题,从最简单的——只启动一个程序开始。
WSH也就是用来解析Vbs的宿主,本身包含了几个个常用对象:
1、stemObject—>提供一整套文件系统操作函数
2、nary—>用来返回存放键值对的字典对象
3、—>提供一套读取系统信息的函数,如读写注册表、查找
指定文件的路径、读取DOS环境变量,读取链接中的设置
4、k—>提供网络连接和远程打印机管理的函数。(其中,
所有Scripting对象都存放在文件中,所有的Wscript对象都存放在
文件中。)
现在我们需要的是第三个对象,好了,让我们先连接一下对象看看,在记事本的
编辑窗口中输入:
SetobjShell=CreateObject(“”)
“notepad”
同样,保存执行。那么看到了一个什么样的结果呢?在桌面上又打开了一个记事
本。
说明之一:Set是Vbs指令,凡是将一对象引用赋给变量,就需要使用t关键
字。那么什么是对象引用呢?凡是字符串、数值、布尔值之外的变量都是对象引
用。Objshell是变量名,可以随意修改。
说明之二:反是正确引用的对象,其本身内置有函数和变量,其引用方法为在变
量后加“.”,后紧跟其实现功能的函数就可以了。的意思就是调用
中的运行外部程序的函数——run,notepad是记事本程序的文件名。
当然你也可以改成“calc”,这是计算器的文件名,winword是word的文件名,
等等吧,所有可执行文件的文件名都可以。但是需要注意的是,如果你要执行的
可执行文件存放的地方不是程序安装的常用路径,一般情况下,需要提供合法的
路径名,但是run在运行解析时,遇到空格会停止,解决的方法是使用双引号,
例如:我的机器上运行qq,代码为:
"""C:"""‘注:三个引号
好,我们再进一步,启动两个程序会如何呢?
输入如下代码:
SetobjShell=CreateObject(“”)
“notepad”
“calc”
执行会如何呢?两个程序基本上同时启动了。如果我们需要先启动notepad再启
动calc将如何呢?很简单在需要顺序执行的代码后加,,True参数就可以了。
好了输入代码:
SetobjShell=CreateObject(“”)
“notepad”,,true
“calc”
看看执行的结果怎么样吧!
总结:
run"path",{0|1|2|3|4|5|6|7|8|9},{true|fal}
run函数有三个参数,第一个参数是你要执行的程序的路径,第二个程序是窗口
的形式,0是在后台运行;1表示正常运行;2表示激活程序并且显示为最小化;
3表示激活程序并且显示为最大化;一共有10个这样的参数我只列出了4个最
常用的。第三个参数是表示这个脚本是等待还是继续执行,如果设为了true,脚
本就会等待调用的程序退出后再向后执行。其实,run做为函数,前面还有一个
接受返回值的变量,一般来说如果返回为0,表示成功执行,如果不为0,则这
个返回值就是错误代码,可以通过这个代码找出相应的错误
◎Vbs脚本编程简明教程之五——错误处理
引发错误的原因有很多,例如用户输入了错误类型的值,或者脚本找不到
必需的文件、目录或者驱动器,我们可以使用循环技术来处理错误,但是VBS
本身也提供了一些基本技术来进行错误的检测和处理。
1、最常见的错误是运行时错误,也就是说错误在脚本正在运行的时候发生,是
脚本试图进行非法操作的结果。例如零被作为除数。在vbs中,任何运行时错误
都是致命的,此时,脚本将停止运行,并在屏幕上显示一个错误消息。你可以
在脚本的开头添加
OnErrorResumeNext
这行语句可以告诉vbs在运行时跳过发生错误的语句,紧接着执行跟在它后面的
语句。
发生错误时该语句将会把相关的错误号、错误描述和相关源代码压入错误堆栈。
2、虽然OnErrorResumeNext语句可以防止vbs脚本在发生错误时停止运行,
但是它并不能真正处理错误,要处理错误,你需要在脚本中增加一些语句,用来
检查错误条件并在错误发生时处理它。
vbscript提供了一个对象err对象,他有两个方法clear,rai,5个属性:description,
helpcontext,helpfile,number,source
err对象不用引用实例,可以直接使用,例如:
onerrorresumenext
a=11
b=0
c=a/b
<>0then
&ption&
endif
◎Vbs脚本编程简明教程之六——修改注册表
Vbs中修改注册表的语句主要有:
1、读注册表的关键词和值:
可以通过把关键词的完整路径传递给wshshell对象的regread方法。例如:
tws=object("")
v=d("HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurre
ntVersionRunnwiz")
2、写注册表
使用wshshell对象的regwrite方法。例子:
path="HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersio
nRun"
tws=object("")
t=te(path&"jj","hello")
这样就把
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunj
j这个键值改成了hello.不过
要注意:这个键值一定要预先存在。如果要创建一个新的关键词,同样也是用这
个方法。
path="HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersio
nrunsssa2000love"
tws=object("")
val=te(path,"nenboy")
val=d(path)
l
删除关键字和值
使用regdelete方法,把完整的路径传递给regdelete就可以了
例如
val=(path)
注意,如果要删除关键词的值的话一定要在路径最后加上“”,如果不加斜线,
就会删除整个关键词。
安全吧补充:
现有注册表数据类型
◎Vbs脚本编程简明教程之七——FSO的常见对象和方法
文件系统是所有操作系统最重要的部分之一,脚本经常会需要对文件及文
件夹进行访问和管理,在Vbs中对桌面和文件系统进行访问的顶级对象是
FileSystemObject(FSO),这个对象特别复杂,是vbs进行文件操作的核心。此节
内容应了如指掌。
FSO包含的常见对象有:
Drive对象:包含储存设备的信息,包括硬盘、光驱、ram盘、网络驱动器
Drives集合:提供一个物理和逻辑驱动器的列表
File对象:检查和处理文件
Files集合:提供一个文件夹中的文件列表
Folder对象:检查和处理文件夹
Folders集合:提供文件夹中子文件夹的列表
Textstream对象:读写文本文件
FSO的常见方法有:
BulidPath:把文件路径信息添加到现有的文件路径上
CopyFile:复制文件
CopyFolder:复制文件夹
CreateFolder:创建文件夹
CreateTextFile:创建文本并返回一个TextStream对象
DeleteFile:删除文件
DeleteFolder:删除文件夹及其中所有内容
DriveExits:确定驱动器是否存在
FileExits:确定一个文件是否存在
FolderExists:确定某文件夹是否存在
GetAbsolutePathName:返回一个文件夹或文件的绝对路径
GetBaName:返回一个文件或文件夹的基本路径
GetDrive:返回一个dreve对象
GetDriveName:返回一个驱动器的名字
GetExtensionName:返回扩展名
GetFile:返回一个file对象
GetFileName:返回文件夹中文件名称
GetFolder:返回一个文件夹对象
GetParentFolderName:返回一个文件夹的父文件夹
GetSpecialFolder:返回指向一个特殊文件夹的对象指针
GetTempName:返回一个可以被createtextfile使用的随机产生的文件或文件夹的
名称
MoveFile:移动文件
MoveFolder:移动文件夹
OpenTextFile:打开一个存在的文件并返回一个TextStream对象
◎Vbs脚本编程简明教程之八——FSO中文件夹的基本操作
1、使用fso
由于fso不是wsh的一部分,所以我们需要建立他的模型
例如tfs=object(“stemobject”)
这样就建立了fso的模型。如果要释放的话也很简单,tfs=nothing
2、使用文件夹
在创建前,我们一般需要检查该文件夹是否存在例如:
dimfs,s//定义fs、s两个变量
tfs=object(“stemobject”)//fs为FSO实例
if(exists(“c:temp”))then//判断c:temp文件夹是否存在
s=”isavailable”
el
s=”notexist”
tfoldr=folder(“c:temp”)//不存在则建立
endif
删除:tfs=object(“stemobject”)
folder(“c:windows”)
拷贝:tfs=object(“stemobject”)
lder“c:data”“d:data”
注意:如果c:data和d:data都存在,脚本会出错,复制也就会停止,如果要强
制覆盖,使用
lder“c:data”“d:data”,true
移动:tfs=object(“stemobject”)
lder“c:data”“d:data”
我们可以使用统配符,来方便操作:
例如,lder:c:datate*”,“d:working”
注意:在目的路径最后没有使用“”也就是说我没有这样写:
lderc:datate*”,“d:working”
这样写的话,如果d:working目录不存在,windows就不会为我们自动创建这个
目录。
注意:上面我们所举的例子都是在利用fso提供的方法,如果使用folder对象也
完全是可以的:
tfs=object(“stemobject”)
tf=der(“c:data”)
//删除文件夹c:data。如果有子目录,也会被删除
“d:working”,true//拷贝到d:working
“d:temp”//移动到d:temp
3、特殊文件夹
一般指的就是系统文件夹:windowssystem32,临时文件夹,windows文件夹,
在前几篇的时候,我们提过一下:例如
tfs=object(“stemobject”)
twshshell=object(“”)
osdir=environmentstrings(“%systemroot%”)
tf=der(osdir)
当然,还有简单的方法那就是使用getspecialfolder()
这个方法使用3种值:
0表示windows文件夹,相关常量是windowsfolder
1系统文件夹,相关常量是systemfolder
2临时目录,相关常量temporaryfolder
例如:
tfs=object(“stemobject”)
twfolder=cialfolder(0)‘返回windows目录
twfolder=cialfolder(1)‘返回system32
twfolder=cialfolder(2)'返回临时目录
Vbs脚本编程简明教程之十三—WMI基础
WMI即Windows管理规范,是用户管理本地和远程计算机的一种模型。
通过它可以访问、配置、管理和监视几乎所有的Windows资源。WMI的语法
十分简单,基本上常见的命名空间、对象等用几乎一模一样。它对应的是Windows
里的WMI服务(winmgmt)。
一、WMI的起源
几年前,几家资深的计算机公司由于系统管理领域缺少标准,委托DMTF
启动了CIM(通用信息模型)项目,理想的CIM是一种不受限制于任何特定实
现环境的管理工具。WMI是CIM的微软实现,它有很多类是从CIM中派生出
来的。
二、WMI的命名空间
那么命名空间是做什么作用的呢?我简单这样说,在同一段代码中,如果
有两个变量或函数的名字完全相同,就会出现冲突。命名空间就是为解决变量、
函数的命名冲突而服务的。解决的办法就是将你的变量定义在一个不同名字的命
名空间中。就好像财政局有个张三,公安局也有个张三,但我们清楚,就是因为
他们分属不同的单位。有些地方可能不太准确,但大致意思就是这样了。
WMI的命名空间创建了一个层次结构,有点类似于我们的目录文件结构。
1、root-作为所有其它名字的占位符;
2、rootdefault-与注册表操作有关的类;
3、rootcurity-与系统安全有关的类;
4、rootcimv2-从CIM派生的类,代表我们最常用的工作环境。
三、WMI的对象路径
WMI的对象路径用来在CIM库中定位类和它的事例,对象路径用两个反
斜杠开头,第一个元素是目标计算机的名字,第二个元素是相应的WMI命名
空间,第三个元素是相应的类名,并用:将它与命名空间分隔开来。例如:
..rootcimv2:win32_rvice
其中那个.代表是本地系统。
四、WMI的查询语言——WQL仅仅是ANSISQL的一个子集,只能用于数据的
提取。
数据、事件查询的基本语法为:
Selectpro1,pro2,pro3frommyclass(myclasvent)
例如:Selectname,pathfromWin32_share说明:列出所有共享的名称和路径
也可以使用通配符*,例如:Select*fromWin32_share
关键字Where用于限定查询的范围。
例如:Select*fromWin32_sharewherename=”Admin”
五、WMI脚本中使用的三个步骤
步骤1:连接到WMI服务
在任何WMI脚本中,第一个步骤都是建立一个到目标计算机上的Windows管
理服务的连接。方法是调用VBScript的Getobject函数并将WMI脚本库的名
字对象的名称(即“winmgmts:”,后跟目标计算机的名称)传递到Getobject,
并返回一个对象的引用,此时,您就可以调用其提供的方法如:InstancesOf,正
如方法名所示,InstancesOf返回由资源的类名标识的托管资源的所有实例。
SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootCIMV2")
步骤2:检索WMI托管资源的实例
一般采用WQL来实现。
步骤3:显示WMI托管资源的属性
最后一个步骤是枚举检索得到集合的内容。一般采用
Foreachenuminmyclass
…
Next结构来实现。
六、WMI测试器()验证脚本执行结果
现在,您对可用于浏览和查看CIM的工具已经有了一些认识,让我们使用WMI
测试器()来检查Win32_Process类定义,以便从在您的本地计算
机上运行的进程检索一些属性。
1.打开一个命令提示,键入C:>,按下Enter来开始WMI测试器
工具。请注意,大部分按钮在主WMI测试器窗口上是被禁用的,这说明此时
您没有连接到WMI。
2.单击“连接”按钮连接到本地或远程计算机上的WMI服务。显示“连接”
对话框,它提供一个标记为名称空间的文本输入区域,该区域默认值为
rootdefault。将名称空间区域的值更改为rootcimv2,单击“连接”对话框的连
接按钮返回到主WMI测试器窗口。
3.主窗口中左上角的命名空间标识符应该显示为rootcimv2。请注意,所有的按
钮现在都已启用,这说明在当前凭据环境下,您已经成功连接到本地主机上的
WMI。单击枚举类别打开“超类信息”对话框。
4.在“超类信息”对话框中,不要填写输入超类别名称区域,单击递归选项,
单击确定以枚举rootcimv2名称空间中定义的所有CIM类。
请注意,列于“查询结果”对话框顶部的类是以两个下划线为开头的。这
些是系统类。系统类是预定义的CIM类,支持内部WMI配置与操作,例如提
供程序注册、命名空间安全性及事件通知等。现在,忽略系统类,向下滚动“查
询结果”对话框直至看到以CIM_开头的类。名称以CIM_开头的类是由
DMTF维护的核心与公共基类。继续向下滚动直至到达以Win32_开头的类。
名称以Win32_开头的类是Microsoft扩展类,表示Windows特定的托管资
源。如果这是您第一次检查rootcimv2命名空间,您可能希望熟悉rootcimv2命
名空间中的类的完整集合,尤其是有Win32_前缀的类。
5.向下滚动“查询结果”对话框直至到达Win32_Process类,双击该类名打开
Win32_Process对话框的对象编辑器。
6.“对象编辑器”对话框显示被选定类的定义和实现的详细信息(属性和方法)。
选择HideSystemProperties复选框隐藏系统属性.剩余的Win32_Process属性
表示您可以从在本地或远程计算机上运行的进程检索的信息。
运行如下代码:
strComputer="."
SetwbemServices=Getobject("winmgmts:"&strComputer)
SetwbemObjectSet=cesOf("Win32_Process")
ForEachwbemObjectInwbemObjectSet
"Name:"&&vbCrLf&_
"Handle:"&&vbCrLf&_
"ProcessID:"&sID
Next
7.在运行脚本之后,您可以用WIMI测试器验证脚本的结果。在Win32_Process
对话框的对象编辑器中,单击Instances。产生的查询结果对话框列出在计算机
上运行的进程的实例。双击一个指定的进程实例,查看该实例的详细信息阻止客
人运行你不想运行的程序
很多人都有这样的经验,刚刚装好的系统,让人运行了一些你不想他运行的程序,
比如说QQ,又是聊天,又是下载表情,不过一会,流氓插件、病毒、木马已经
盘踞了你的计算机,常常是忍痛将这个程序卸载,可是不知情的人很自觉的下载
安装,使整个系统无法正常运行。
其实用vbs和wmi结合起来,使你的计算机上有相应的程序安装,别人又无法
运行起来太容易了,现在给出代码:
OnErrorResumeNext'忽略所有的错误
Dimbag,pipe,honker,good
Do
good="."'定义为本地计算机
tbag=getobject("winmgmts:"&good&"rootcimv2")'l连接到cimv2命名空间
tpipe=ery("lect*fromwin32_processwherename=''or
name=''orname=''")'看,这是我的计算机上不允许运行的
程序,qq、qqgame、winmine(扫雷)如果你还有其它的程序不允许运行,很简
单,在其中添加orname='你不允许运行的程序名'
foreachiinpipe
ate()
msgbox"发现盗版系统,现已进行功能限制!"&vbcrlf&"请使用正版软件!",,"
微软提示"'此行其实可有可无,有这行只是为了免去怀疑
next
60000'每1分钟检测一次
loop
那么如果我自己想运行这些程序该怎么办呢?很简单,Ctrl+Alt+Del三个键齐按,
打开windows任务管理器,在进程中结束和进程的运
行就可以了
◎Vbs脚本编程简明教程之十四—使用dictionary对象
VBS中存在一个特殊的对象-dictionnary,是一个集合对象。一般情况霞,
我把这个特殊的集合想象为数组,可以使用其中内建的函数完成存储和操纵数据
等基本任务,无须担心数据是在哪些行列,而是使用唯一的键进行访问或者是一
个只能运行在内存中的数据库,并只有两个字段分别是:key和item,在使用中,
字段key是索引字段。
tsdict=CreateObject("nary")
"a","apple"
"b","banana"
"c","copy"
msgbox"键名"&key&"是"&"="&sdict(key)
next
all
这个脚本很简单,就是定义了一个dictionary对象的实例sdict,并加入了三条
数据,然后对每一条数据进行了枚举,最后,将对象的实例清空。
Dictionary对象的成员概要
属性和说明
CompareMode设定或返回键的字符串比较模式
Count只读。返回Dictionary里的键/条目对的数量
Item(key)设定或返回指定的键的条目值
Key(key)设定键值
方法和说明
Add(key,item)增加键/条目对到Dictionary
Exists(key)如果指定的键存在,返回True,否则返回Fal
Items()返回一个包含Dictionary对象中所有条目的数组
Keys()返回一个包含Dictionary对象中所有键的数组
Remove(key)删除一个指定的键/条目对
RemoveAll()删除全部键/条目对
◎Vbs脚本编程简明教程之十五—VBS内置函数
Abs函数:返回数的绝对值。
Array函数:返回含有数组的变体。
Asc函数:返回字符串首字母的ANSI字符码。
Atn函数:返回数值的反正切。
CBool函数:返回已被转换为Boolean子类型的变体的表达式。
CByte函数:返回已被转换为字节子类型的变体的表达式。
CCur函数:返回已被转换为货币子类型的变体的表达式。
CDate函数:返回已被转换为日期子类型的变体的表达式。
CDbl函数:返回已被转换为双精度子类型的变体的表达式。
Chr函数:返回与指定的ANSI字符码相关的字符。
CInt函数:返回已被转换为整形子类型的变体的表达式。
CLng函数;返回已被转换为Long子类型的变体的表达式。
Cos函数:返回角度的余弦。
CreateObject函数:创建并返回对“自动”对象的引用。
CSng函数:返回已被转换为单精度子类型的变体的表达式。
CStr函数:返回已被转换为字符串子类型的变体的表达式。
Date函数:返回当前系统日期。
DateAdd函数:返回的日期已经加上了指定的时间间隔。
DateDiff函数:返回两个日期之间的间隔。
DatePart函数:返回给定日期的指定部分。
DateSerial函数:返回指定年月日的日期子类型的变体。
DateValue函数:返回日期子类型的变体。
Day函数:返回日期,取值范围为1至31。
Eval函数:计算表达式并返回结果。
Exp函数:返回e(自然对数的底)的多少次方。
Filter函数:根据指定的筛选条件,返回含有字符串数组子集的、下限为0的数
组。
Fix函数:返回数的整数部分。
FormatCurrency函数:返回的表达式为货币值格式,其货币符号采用系统控制
面板中定义的。
FormatDateTime函数:返回的表达式为日期和时间格式。
FormatNumber函数:返回的表达式为数字格式。
FormatPercent函数:返回的表达式为百分数(乘以100)格式,后面有%符
号。
GetObject函数:返回从文件对“自动”对象的引用。
GetRef函数:返回对能够绑定到一事件的过程的引用。
Hex函数:返回一字符串,代表一个数的十六进制值。
Hour函数:返回表示钟点的数字,取值范围为0至23。
InputBox函数:在对话框中显式一提示,等待用户输入文本或单击按钮,并返
回文本框的内容。
InStr函数:返回一个字符串在另一个字符串中首次出现的位置。
InStrRev函数;返回一个字符串在另一个字符串中出现的位置,但是从字符串的
尾部算起。
Int函数:返回数的整数部分。
IsArray函数:返回Boolean值,反映变量是否为数组。
IsDate函数:返回Boolean值,反映表达式能否转换为日期。
IsEmpty函数:返回Boolean值,反映变量是否已被初始化。
IsNull函数:返回Boolean值,反映表达式是否含有无效数据(Null)。
IsNumeric函数:返回Boolean值,反映表达式能否转换为数字。
IsObject函数:返回Boolean值,反映表达式是否引用了有效的“自动”对象。
Join函数:返回通过连接许多含有数组的子串而创建的字符串。
LBound函数;返回指定维数数组的最小有效下标。
LCa函数:返回的字符串已被转换为小写字母。
Left函数:返回字符串最左边的指定数量的字符。
Len函数:返回字符串中的字符数或存储变量所需的字节数。
LoadPicture函数:返回图片对象。只用于32位平台。
Log函数:返回数的自然对数。
LTrim函数;返回去掉前导空格的字符串。
Mid函数:从字符串中返回指定数量的字符。
Minute函数:返回分钟数,取值范围为0至59。
Month函数:返回表示月份的数,取值范围为1至12。
MonthName函数:返回表示月份的字符串。
MsgBox函数:在对话框中显示消息,等待用户单击按钮,并返回表示用户所击
按钮的数值。
Now函数:返回计算机的当前系统日期和时间。
Oct函数:返回表示该数八进制数值的字符串。
Replace函数:返回一字符串,其中指定的子串已被另一个子串替换了规定的次
数。
RGB函数:返回代表RGB颜色值的数字。
Right函数:返回字符串最右边的指定数量的字符。
Rnd函数:返回随机数。
Round函数:返回指定位数、四舍五入的数。
RTrim函数:返回去掉尾部空格的字符串副本。
ScriptEngine函数:返回反映使用中的脚本语言的字符串。
ScriptEngineBuildVersion函数:返回使用中的脚本引擎的编译版本号。
ScriptEngineMajorVersion函数:返回使用中的脚本引擎的主版本号。
ScriptEngineMinorVersion函数:返回使用中的脚本引擎的次版本号。
Second函数:返回秒数,取值范围为0至59。
Sgn函数:返回反映数的符号的整数。
Sin函数:返回角度的正弦值。
Space函数:返回由指定数量的空格组成的字符串。
Split函数:返回下限为0的、由指定数量的子串组成的一维数组。
Sqr函数:返回数的平方根。
StrComp函数:返回反映字符串比较结果的数值。
String函数:返回指定长度的重复字符串。
StrRever函数:返回一字符串,其中字符的顺序与指定的字符串中的顺序相反。
Tan函数:返回角度的正切值。
Time函数:返回表示当前系统时间的“日期”子类型的“变体”。
Timer函数:返回时经子夜12:00AM后的秒数。
TimeSerial函数:返回含有指定时分秒时间的日期子类型的变体。
TimeValue函数:返回含有时间的日期子类型的变体。
Trim函数:返回去掉前导空格或尾部空格的字符串副本。
TypeName函数:返回一字符串,它提供了关于变量的变体子类型信息。
UBound函数:返回指定维数数组的最大有效下标。
UCa函数:返回的字符串已经被转换为大写字母。
VarType函数:返回标识变体子类型的数值。
Weekday函数:返回表示星期几的数值。
WeekdayName函数:返回表示星期几的字符串。
Year函数:返回表示年份的数值。
◎Vbs脚本编程简明教程之十五——VBS内置函数
Abs函数:返回数的绝对值。
Array函数:返回含有数组的变体。
Asc函数:返回字符串首字母的ANSI字符码。
Atn函数:返回数值的反正切。
CBool函数:返回已被转换为Boolean子类型的变体的表达式。
CByte函数:返回已被转换为字节子类型的变体的表达式。
CCur函数:返回已被转换为货币子类型的变体的表达式。
CDate函数:返回已被转换为日期子类型的变体的表达式。
CDbl函数:返回已被转换为双精度子类型的变体的表达式。
Chr函数:返回与指定的ANSI字符码相关的字符。
CInt函数:返回已被转换为整形子类型的变体的表达式。
CLng函数;返回已被转换为Long子类型的变体的表达式。
Cos函数:返回角度的余弦。
CreateObject函数:创建并返回对“自动”对象的引用。
CSng函数:返回已被转换为单精度子类型的变体的表达式。
CStr函数:返回已被转换为字符串子类型的变体的表达式。
Date函数:返回当前系统日期。
DateAdd函数:返回的日期已经加上了指定的时间间隔。
DateDiff函数:返回两个日期之间的间隔。
DatePart函数:返回给定日期的指定部分。
DateSerial函数:返回指定年月日的日期子类型的变体。
DateValue函数:返回日期子类型的变体。
Day函数:返回日期,取值范围为1至31。
Eval函数:计算表达式并返回结果。
Exp函数:返回e(自然对数的底)的多少次方。
Filter函数:根据指定的筛选条件,返回含有字符串数组子集的、下限为0的数
组。
Fix函数:返回数的整数部分。
FormatCurrency函数:返回的表达式为货币值格式,其货币符号采用系统控制
面板中定义的。
FormatDateTime函数:返回的表达式为日期和时间格式。
FormatNumber函数:返回的表达式为数字格式。
FormatPercent函数:返回的表达式为百分数(乘以100)格式,后面有%符
号。
GetObject函数:返回从文件对“自动”对象的引用。
GetRef函数:返回对能够绑定到一事件的过程的引用。
Hex函数:返回一字符串,代表一个数的十六进制值。
Hour函数:返回表示钟点的数字,取值范围为0至23。
InputBox函数:在对话框中显式一提示,等待用户输入文本或单击按钮,并返
回文本框的内容。
InStr函数:返回一个字符串在另一个字符串中首次出现的位置。
InStrRev函数;返回一个字符串在另一个字符串中出现的位置,但是从字符串的
尾部算起。
Int函数:返回数的整数部分。
IsArray函数:返回Boolean值,反映变量是否为数组。
IsDate函数:返回Boolean值,反映表达式能否转换为日期。
IsEmpty函数:返回Boolean值,反映变量是否已被初始化。
IsNull函数:返回Boolean值,反映表达式是否含有无效数据(Null)。
IsNumeric函数:返回Boolean值,反映表达式能否转换为数字。
IsObject函数:返回Boolean值,反映表达式是否引用了有效的“自动”对象。
Join函数:返回通过连接许多含有数组的子串而创建的字符串。
LBound函数;返回指定维数数组的最小有效下标。
LCa函数:返回的字符串已被转换为小写字母。
Left函数:返回字符串最左边的指定数量的字符。
Len函数:返回字符串中的字符数或存储变量所需的字节数。
LoadPicture函数:返回图片对象。只用于32位平台。
Log函数:返回数的自然对数。
LTrim函数;返回去掉前导空格的字符串。
Mid函数:从字符串中返回指定数量的字符。
Minute函数:返回分钟数,取值范围为0至59。
Month函数:返回表示月份的数,取值范围为1至12。
MonthName函数:返回表示月份的字符串。
MsgBox函数:在对话框中显示消息,等待用户单击按钮,并返回表示用户所击
按钮的数值。
Now函数:返回计算机的当前系统日期和时间。
Oct函数:返回表示该数八进制数值的字符串。
Replace函数:返回一字符串,其中指定的子串已被另一个子串替换了规定的次
数。
RGB函数:返回代表RGB颜色值的数字。
Right函数:返回字符串最右边的指定数量的字符。
Rnd函数:返回随机数。
Round函数:返回指定位数、四舍五入的数。
RTrim函数:返回去掉尾部空格的字符串副本。
ScriptEngine函数:返回反映使用中的脚本语言的字符串。
ScriptEngineBuildVersion函数:返回使用中的脚本引擎的编译版本号。
ScriptEngineMajorVersion函数:返回使用中的脚本引擎的主版本号。
ScriptEngineMinorVersion函数:返回使用中的脚本引擎的次版本号。
Second函数:返回秒数,取值范围为0至59。
Sgn函数:返回反映数的符号的整数。
Sin函数:返回角度的正弦值。
Space函数:返回由指定数量的空格组成的字符串。
Split函数:返回下限为0的、由指定数量的子串组成的一维数组。
Sqr函数:返回数的平方根。
StrComp函数:返回反映字符串比较结果的数值。
String函数:返回指定长度的重复字符串。
StrRever函数:返回一字符串,其中字符的顺序与指定的字符串中的顺序相反。
Tan函数:返回角度的正切值。
Time函数:返回表示当前系统时间的“日期”子类型的“变体”。
Timer函数:返回时经子夜12:00AM后的秒数。
TimeSerial函数:返回含有指定时分秒时间的日期子类型的变体。
TimeValue函数:返回含有时间的日期子类型的变体。
Trim函数:返回去掉前导空格或尾部空格的字符串副本。
TypeName函数:返回一字符串,它提供了关于变量的变体子类型信息。
UBound函数:返回指定维数数组的最大有效下标。
UCa函数:返回的字符串已经被转换为大写字母。
VarType函数:返回标识变体子类型的数值。
Weekday函数:返回表示星期几的数值。
WeekdayName函数:返回表示星期几的字符串。
Year函数:返回表示年份的数值。
编写vbs脚本可以帮助你完成很多在系统里无法直接完成的事情,这里我给大家
带来一些小示例
一、运行系统命令
SetWshShell=CreatObject("")
Output=("cmd/cneturbiweilun12345/add").l
tput
运行这个Vbs脚本,效果就相当于在cmd里面输入命令neturbiweilun12345
/add,添加一个密码是12345的biweilun用户。
二、连接数据库
Setconn=CreatObject("tion")'创建一个
tion对象
tionString="Provider=.4.0;Data
Source=D:"
trs=e("SELECT123asa")'执行一个SQL语句
("a")
三、写入文件
Functionwrite2File(fileContent)
Setfso=CreatObject("stemObject")
SettheFile=
xtFile("C:",2,true)
ileContent
EndFunction
四、打开防火墙端口
port=23'要打开的端口号
SetWshShell=CreatObject("")
te
"HKEYSYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPoli
cyStandardProfileGloballyOpenPortsList"&port&";TCP";ports&";TCP;*Enable;M
ediaServices","REG_SZ"
五、读取网页
FunctionhttpGet(url)
ifLeft(url,4)<>"http"Thenurl=""&url
Endif
tobXMLHTTP=CreatObject("P")
"GET",url,0
<>200ThenhttpGet=Fal
el
httpGet=Text
Endif
EndFunction
六、模拟键盘按键
如重启计算机:
tWshShell=CreatObject("")
ys"^{ESC}u"'^就是指代Ctrl键
ys"R"
vbs应用实例
应用实例
1、读本机"计算机名"
'
DimReadComputerName
SetReadComputerName=Object("")
DimComputerName,RegPath
RegPath="HKLMSystemCurrentControlSetControlComputerNameComputerNameC
omputerName"
ComputerName=d(RegPath)
MsgBox("计算机名为"&ComputerName)
2、隐藏快捷方式图标上的小箭头
'
DimHiddenArrowIcon
SetHiddenArrowIcon=Object("")
DimRegPath1,RegPath2
RegPath1="HKCRlnkfileIsShortCut"
RegPath2="HKCRpiffileIsShortCut"
ete(RegPath1)
ete(RegPath2)
3、改造"开始"菜单
'
DimChangeStartMenu
SetChangeStartMenu=Object("")
RegPath="HKCRSoftwareMicrosoftWindowsCurrentVersionPolicies"
Type_Name="REG_DWORD"
Key_Data=1
StartMenu_Run="NoRun"
StartMenu_Find="NoFind"
StartMenu_Clo="NoClo"
SubChange(Argument)
teRegPath&Argument,Key_Data,Type_Name
MsgBox("Success!")
EndSub
CallChange(StartMenu_Run)'禁用"开始"菜单中的"运行"功能
CallChange(StartMenu_Find)'禁用"开始"菜单中的"查找"功能
CallChange(StartMenu_Clo)'禁用"开始"菜单中的"关闭系统"功能
4、向Windows中添加自启动程序
该程序能在开机时自动运行。
'
'假设该程序在c:myfile文件夹中,文件名为
DimAutoRunProgram
SetAutoRunProgram=Object("")
RegPath="HKLMSoftwareMicrosoftWindowsCurrentVersionRun"
Type_Name="REG_SZ"
Key_Name="AutoRun"
Key_Data="C:"
'该自启动程序的全路径文件名
egPath&Key_Name,Key_Data,Type_Name
'在启动组中添加自启动程序
MsgBox("Success!")
结束进程删除文件实例→vbs
2007年04月19日星期四上午02:37
DimWshSHell,FSO
SetWshSHell=Object("")
SetFSO=CreateObject("stemObject")
Source=ath(cialFolder(0),"")
Target=ath(lFolders(4),"")
e(Source).Copy(Target)
1000
"复制‘记事本’到桌面-(复制文件)。",5,"这是个结束进程删除
文件的实例-QQ25926183",0+64
(chr(34)&Target&chr(34))
1000
"运行‘记事本’在桌面-(创建进程)。",5,"这是个结束进程删除
文件的实例-QQ25926183",0+64
foreachpsingetobject_
("winmgmts:.rootcimv2:win32_process").instances_
ifLCa()=""then
("ntsd-cq-p"&),vbHide
"关闭‘记事本’在任务-(结束进程)。",5,"这是个结束进程删除
文件的实例-QQ25926183",0+64
1000
ablepath
"删除‘记事本’从桌面-(删除文件)。",5,"这是个结束进程删除
文件的实例-QQ25926183",0+64
endif
next
SetWshSHell=Nothing
SetFSO=Nothing
(0)
vbs脚本大全
取得本机IP
strComputer="."
SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")
SetIPConfigSet=ery("SelectIPAddressfrom
Win32_NetworkAdapterConfigurationWhereIPEnabled=TRUE")
ForEachIPConfiginIPConfigSet
IfNotIsNull(ess)Then
ess
rAddress
Next
EndIf
Next
2取得本机计算机名
strComputer="."
SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")
SetcolComputers=ery("Select*from
Win32_ComputerSystem")
ForEachobjComputerincolComputers
Next
--------------------------------------------------------------------------------
4检查升级包
strComputer="."
SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")
SetcolOperatingSystems=ery("Select*from
Win32_OperatingSystem")
ForEachobjOperatingSystemincolOperatingSystems
ePackMajorVersion&"."&
ePackMinorVersion
Next
--------------------------------------------------------------------------------
5检查HotFix
strComputer="."
SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")
SetcolQuickFixes=ery("Select*from
Win32_QuickFixEngineering")
ForEachobjQuickFixincolQuickFixes
"Description:"&ption
"HotFixID:"&ID
Next
--------------------------------------------------------------------------------
6检查本地管理员数目
SetobjNetwork=CreateObject("k")
strComputer=erName
SetobjGroup=GetObject("WinNT://"&strComputer&"/Administrators,group")
s
Next
--------------------------------------------------------------------------------
7磁盘系统
strComputer="."
SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")
SetcolDisks=ery("Select*fromWin32_LogicalDisk
WhereDriveType=3")
ForEachobjDiskincolDisks
"Diskdrive:"&ID&"--"&stem
Next
--------------------------------------------------------------------------------
8检测自动登录是否开启
ConstHKEY_LOCAL_MACHINE=&H80000002
strComputer="."
SetobjReg=GetObject("winmgmts:"&strComputer&"rootdefault:StdRegProv")
strKeyPath="SoftwareMicrosoftWindowsNTCurrentVersionWinLogon"
strValueName="AutoAdminLogon"
RDValueHKEY_LOCAL_MACHINE,strKeyPath,
strValueName,dwValue
IfdwValue=1Then
"Autologoninabled."
El
"Autologonisdisabled."
EndIf
--------------------------------------------------------------------------------
9关闭自动登录
ConstHKEY_LOCAL_MACHINE=&H80000002
strComputer="."
SetobjReg=GetObject("winmgmts:"&strComputer&"rootdefault:StdRegProv")
strKeyPath="SoftwareMicrosoftWindowsNTCurrentVersionWinLogon"
strValueName="AutoAdminLogon"
dwValue=0
RDValueHKEY_LOCAL_MACHINE,strKeyPath,strValueName,
dwValue
--------------------------------------------------------------------------------
10检查Guest是否禁用
SetobjNetwork=CreateObject("k")
strComputer=erName
SetobjUr=GetObject("WinNT://"&strComputer&"/Guest")
tDisabledThen
"TheGuestaccountisdisabled."
El
"TheGuestaccountinabled."
EndIf
--------------------------------------------------------------------------------
11关闭Guest
SetobjNetwork=CreateObject("k")
strComputer=erName
SetobjUr=GetObject("WinNT://"&strComputer&"/Guest")
tDisabledThen
"TheGuestaccountisalreadydisabled."
El
tDisabled=True
o
"TheGuestaccounthasbeendisabled."
EndIf
--------------------------------------------------------------------------------
12检索本地共象
strComputer="."
SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")
SetcolShares=ery("Select*fromWin32_Share")
ForeachobjShareincolShares
"Name:"&
"Path:"&
"Type:"&
Next
--------------------------------------------------------------------------------
13脚本检索一个文件夹下.txt文件汗哦值得学习
SetobjWMIService=GetObject("winmgmts:.rootcimv2")
SetcolFiles=ery("SELECT*FROMCIM_DataFile
WHEREPath='DocumentsandSettingsAdministrator桌面'ANDDrive='E:'
ANDExtension='txt'")
"esfound:"&
foreachaaincolFiles
NL=NL&vbcrlf&
next
--------------------------------------------------------------------------------
14我如何向用户显示一个用来选择文件的对话框?
问:
嗨,ScriptingGuy!有没有什么方法可以让我使用脚本向用户显示一个对话框,
供用户选择文件使用?
--BF
答:
您好,BF。如果您使用的是Windows2000,我们不知道实现此操作的方法,至
少操作系统中没有内置这样的方法。但如果您使用的是WindowsXP,情况就不
同了。在WindowsXP上,您可以使用“Dialog”对象向
用户显示一个标准的“文件打开”对话框。可以用类似以下代码的脚本:
SetobjDialog=CreateObject("Dialog")
="AllFiles|*.*"lDir="C:"intResult=
en
IfintResult=meEndIf
这是一个小脚本,所以让我们逐行进行解释吧。我们首先创建一个对
Dialog对象的对象引用(名为“objDialog”)。接着,我们
设置对话框的“筛选”属性。我们要显示所有文件,所以我们将筛选设置成这样:
="AllFiles|*.*"
假如我们只想显示文本文件,那该怎么办?在这种情况下,我们将使用以下筛选:
="TextFiles|*.txt"
您也许能够看出它是如何运行的:我们为文件类型提供说明(TextFiles),然后
插入一个竖线分隔符(|),最后使用标准的通配符来指示所有.txt文件(*.txt)。
是不是想默认显示.txt文件,然后为用户提供查看所有文件的选项?那么可以
使用以下代码:
="TextFiles|*.txt|AllFiles|*.*"
试一试,您就明白我们的意思了。
然后,我们指定默认文件夹。默认情况下,我们希望对话框显示位于驱动器C的
根文件夹中的文件,所以我们这样设置“InitialDir”属性:
lDir="C:"
希望显示C:Windows文件夹中的文件吗?那么可以使用以下代码:
lDir="C:Windows"
不必担心:这是一个真正的“文件打开”对话框,所以您可以随意单击,并且可
以随时停下来。您从C:Windows开始并不意味着您只能打开该文件夹中的文
件。
最后,我们使用下面这行代码显示对话框:
intResult=en
现在,我们只需坐下来,等待用户选择文件并单击“确定”(或者等待用户单击
“取消”)。如果用户单击“取消”,则变量intResult将被设置为0。在我们的
脚本中,我们检查intResult的值,如果是0,我们将只需要使用来
终止此脚本。
但是如果用户实际上选择了文件并单击了“确定”,那该怎么办?在这种情况下,
intResult将被设置为-1,“FileDialog”属性将被设置为所选文件的路径名。我
们的脚本只回显路径名,这意味着我们将得到类似以下内容的输出:
C:
不用说,您并不局限于只回显文件路径。实际上,您可以使用WMI、
FileSystemObject或一些其它技术来绑定该文件,然后对其执行删除、复制、压
缩或检索文件属性等操作—您对文件能够执行的操作差不多都可以对它执行。
但无论如何,您都需要使用脚本。
顺便说一句,使用此方法,您一次只能选择一个文件,而不能按住“Ctrl”键选
择多个文件。有一种方法可以选择多个文件,至少在XP计算机上可以,但是
我们只能将此问题留到以后的专栏中讨论了。
--------------------------------------------------------------------------------
15我如何确定进程是在哪个帐户下运行的?
问:
嗨,ScriptingGuy!我有一个脚本,它返回关于计算机上运行的所有进程的信息,
只是我不知道如何获得这些进程在其下运行的用户帐户的名称。您可以帮助我
吗?
--DL
答:
您好,DL。是的,我们可以帮助您。确定进程是在哪个帐户下运行的,实际上
相当简单,只是如何着手执行此操作并不是特别显而易见的。如果您与大多数人
一样,那么您可能会通过扫描Win32_Process类的属性来查找名为Account或
UrName或类似的属性。您很有可能找不到。出现这种情况的原因是:
Win32_Process没有可以告诉您进程在哪个帐户下运行的属性。
您需要使用“GetOwner”方法来捕捉此信息。下面这个脚本可以告诉您Microsoft
Word()在哪个帐户下运行:
strComputer="."SetobjWMIService=GetObject("winmgmts:"&strComputer&
"rootcimv2")
SetcolProcessList=ery_("Select*fromWin32_Process
WhereName=''")
erstrUrName,
"Process"&&"isownedby"_&
strUrDomain&""&strUrName&"."Next
我们最感兴趣的是下面这行代码:
erstrNameOfUr,strUrDomain
我们在此所做的就是调用“GetOwner”方法。GetOwner返回两个“输出参数”,
一个返回负责该进程的用户的名称,一个返回该用户所属的域。为捕获这两个输
出参数,我们需要为GetOwner方法提供两个变量。在这个示例脚本中,我们
使用了两个分别叫做strUrName和strUrDomain的变量。名称可以随意选
择;您可以将变量称为A和B或X和Y或任何其它您想要的名称。
不过,变量的顺序不能随意设置:返回的第一个值总是用户名,第二个值总是域。
这意味着,如果您希望用X表示用户名,用Y表示域,那么您要确保您的代
码像下面这行代码一样:
erX,Y
调用GetOwner之后,我们就可直接回显进程名和所有者。请注意,我们可以
稍微来点儿花样儿–使用域用户格式。这样,我们就可以回显类似于
“fabrikamkenmyer”的名称。
下面附带提供了另一个脚本,该脚本可以列出计算机上的所有进程以及各个进程
的所有者:
strComputer="."SetobjWMIService=GetObject("winmgmts:"&strComputer&
"rootcimv2")
SetcolProcessList=ery_("Select*fromWin32_Process")
erstrUrName,
"Process"&&"isownedby"_&
strUrDomain&""&strUrName&"."Next
可能有人感到奇怪,2005年1月3日正好是Microsoft员工的正式休息日。
那么今天为什么会有“嗨,ScriptingGuy!”专栏?这只能是由于Microsoft脚本
专家表现出来的对工作的难以置信的奉献和投入精神。或者,也可能是由于某个
脚本专家–还说不出他或她的名字–没有意识到今天是假日,所以照常来了
(而且是在早上7点啊!)。
--------------------------------------------------------------------------------
16可以将脚本的输出复制到剪贴板吗?
问:
嗨,ScriptingGuy!有办法将脚本输出复制到剪贴板吗?
--ZW,Marilles,France
答:
您好,ZW.如果您不介意用一些疯狂的解决方法,那么实际上将脚本输出复制到
剪贴板相当容易。首先,您需要构造一个字符串,其中包含想要的输出。然后,
创建InternetExplorer的一个实例,然后在其中打开一个空白页。接着,利用
InternetExplorer对象模型的内置功能,将字符串复制到剪贴板;特别是,可以
使用a方法来实现这个技巧。将某些数据复制到剪贴板的示
例脚本如下:
strCopy="Thistexthasbeencopiedtotheclipboard."
SetobjIE=CreateObject("ation")
te("about:blank")
a"text",strCopy
运行脚本,然后打开Notepad,然后单击“粘贴”;应该可以看到所复制的字符
串。
顺便说一下,所有这一切都是在“幕后”发生的,InternetExplorer并不会真的
出现在屏幕上。这是因为,在默认情况下,通过脚本创建的任何IE实例在运行
时都是隐藏的,除非您利用如下语句将其显示出来:
e=True
一些经典的vbs脚本
1.文件下载(无回显)
echoiLocal=LCa(nts(1))>
echoiRemote=LCa(nts(0))>>
echoSetxPost=CreateObject("P")>>
"GET",iRemote,0>>
()>>
echoSetsGet=CreateObject("")>>
=3>>
=1>>
()>>
(Body)>>
FileiLocal,2>>
用法:p://111.111.111.111/
2.列举进程
@echoforeachpsingetobject_>
@echo("winmgmts:.rootcimv2:win32_process").instances_>>
@
^&vbtab^&^&vbtab^&ablepath:next>>
用法:
3.终止进程
@echoforeachpsingetobject_>
@echo("winmgmts:.rootcimv2:win32_process").instances_>>
@=nts(0)ate:end
if:next>>
用法:
4.重启系统
@echoforeachosingetobject_>
@echo
("winmgmts:!.rootcimv2:win32_operatingsystem").instances_>>
@32shutdown(2):next>>
用法:
VBS脚本常用代码
将域用户或租添加到本地组
SetobjGroup=GetObject("WinNT://./Administrators")
SetobjUr=GetObject("WinNT://testnet/Engineers")
(h)
修改本地管理员密码
Setobjcnlar=GetObject("WinNT://./administrator,ur")
sword"P@ssW0rd"
o
弹出YESorNO的对话框,不同的选择执行不同的代码
intAnswer=Msgbox("Doyouwanttodeletethefiles?",vbYesNo,"DeleteFiles")
IfintAnswer=vbYesThen
Msgbox"Youansweredyes."
ElMsgbox"Youansweredno."
EndIf
运行CMD命令行命令
tobshell=object("")
("ipconfig"),,true
如果要运行的命令中包含双引号,可使用&chr(34)&代替
忽略代码错误继续执行
OnErrorResumeNext
放置于代码的最开头,当代码运行出错后并不停止跳出而是继续执行下一条。适
当应用会很有效果。
注册表的修改,读取,删除,创建
Setwso=CreateObject("")'声明
te"%Path%"'创建子键
te"%Path%","%Value%"'修改"默认"键值
te"%Path%",%Value%,%RegType%'修改特定类型的键值
'(字符串值REG_SZ可扩充字符串值REG_EXPAND_SZDWORD值
REG_DWORD二进制值REG_BINARY)
SetWSHShell=Object("")
d(%Path%)'读取注册表子键或键值(一般用于判断某一事件是
否执行)
Setwso=CreateObject("")
ete"%Path%"'删除子键或键值
'(根键缩写HKEY_CLASSES_ROOTHKCRHKEY_CURRENT_USERHKCU
HKEY_LOCAL_MACHINEHKLM,其余无)
Setwso=CreateObject("")
te"HKLMSOFTWAREMicrosftWindowsNT#1"
te"HKLMSOFTWAREMicrosftWindowsNT#1","0"
te"HKLMSOFTWAREMicrosftWindowsNT#1#2",0,REG_BINARY
ete"HKLMSOFTWAREMicrosftWindowsNT#1"
文件的复制,删除,创建,简单的写入
Setfso=Object("stemObject")‘声明
Setf=TextFile("%PATH%")'创建文件,其中f可任意,包含缩略名
ine("VBS")'写文件内容,该命令功能太简单,目前看来只能用于TXT文件
tc=e("%path%")’拷贝某文件
("%PATH2%")'拷贝文件到指定地点
file("%PATH%")'删除文件
Setfso=Object("stemObject")
Setf=TextFile("C:")
WriteLine("VBS")
te=e(C:)
("D:")
file(C:)
向应用程序输出简单的连串指令
dimprogram1'声明变量program1
program1="%Path%"'应用程序路径
twshshell=createobject("")'声明饮用函数
toexec=(program1)'运行程序
2000'(该行命令未知作用.估计是设定延迟,请高手指点)
ivate"%WindowsName%"'激活运用程序窗口
ys"+{%KeyBoardName%}"'第一次输出键盘按键指令前要加+
ys"555555"'在程序输入栏中输入运用该系列命令须首先确定程
序可以实施连串的键盘操作,这在QQ登录中最适用,如下例。
dimprogram1
program1="D:"
twshshell=CreateObject("")
toexec=(program1)
2000
ivate"QQ登录"
ys"+{TAB}"
ys"250481892"
2000
ys"{TAB}"
ys"****************"
2000
ys"{ENTER}"
文件夹的简单操作
Setfso=Object("stemObject")‘声明
Setf=Folder("%PATH%")创建文件夹
Sete=getFolder(%PATH%)类似于“绑定目标”
("%PATH2%")复制文件夹
folder(%PATH%)删除文件夹
Setfso=Object("stemObject")
Setf=Object("C:sample")
("D:sample")
folder("C:sample")
(由上例可以看出,文件夹的操作很多是和文件的操作相通的,因此VBS文件具
有很多命令的统一性)
将某一指定文件夹的所有只读文件转为可读文件
ConstReadOnly=1‘设只读属性对应值为1
SetFSO=CreateObject("stemObject")'声明
SetFolder=der("%PATH%")’绑定文件夹
SetcolFiles=‘文件夹所有文件
ForEachobjFileincolFiles’下列语句应用于文件夹所有文件
utesANDReadOnlyThen'这是关键之处,这里应用了If判断语句,
来检测文件属性是否为只读
utes=utesXORReadOnly‘对判断结果为Ture(默认为
True)’执行XOR逻辑运算,将其改为可读
EndIf‘结束判断
Next
将Word文件另存为文本文件
ConstwdFormatText=2’设置常数值
(当该值为8时另存为HTML文档,为11时另存为XML文档)
SetobjWord=CreateObject("ation")'申明调用函数
SetobjDoc=("%Path%")‘打开某DOC文件
"%PATH2%",wdFormatText另存为……
ConstwdFormatText=2
SetobjWord=CreateObject("ation")
SetobjDoc=("d:")
"g:",wdFormatText
VBS-记录客户机所有动作
file2=""
strComputer="."
SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")
SetIPConfigSet=ery_
("SelectIPAddressfromWin32_NetworkAdapterConfigurationwhere
IPEnabled=TRUE")
ForEachIPConfiginIPConfigSet
IfNotIsNull(ess)Then
Fori=LBound(ess)toUBound(ess)
a=ess(i)
Next
EndIf
Next
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&strComputer&"rootcimv2")
SetcolMonitoredProcess=objWMIService._
ExecNotificationQuery("lect*from__instancecreationevent"_
&"within1whereTargetInstanceisa'Win32_Process'")
i=0
DoWhilei=0
SetobjLatestProcess=ent
b=dLine
tfso=createobject("stemobject")
tfile1=xtfile(file2,8,true)
inenow()&"---"&a&"---"&b&"
Loop
防网页木马VBS脚本
以下为VBS脚本:
'功能:禁止在临时目录%temp%*.*、%ietemp%5*.*及其它指定路径中
运行指定的后缀名
'如果与某个游戏不兼容时,也就是某个游戏会自动生成执行文件到被禁的目录,
请把路径加到白名单中
'程序本身已兼容梦幻西游、大话西游更新,并自动取系统的临时目录和IE临时
目录加入黑名单列表。
'
OnErrorResumeNext
tupgpedit()
Functiontupgpedit()'利用组策略的软件安全防止网站木马和恶意程序
OnErrorResumeNext
DimWshShell,IETempPath,hjmlist,keypath,pathlist,num8
'------------------------------------------------------------------------↓开放运行的程序路径
(白名单)
'------------------------------------------------------------------------↓支持多路径,以分号隔
开
filepath="%temp%;"
'------------------------------------------------------------------------↓路径列表(黑名单路
径)
'------------------------------------------------------------------------↓支持多路径,以分号隔
开
'------------------------------------------------------------------------↓支持多路径,以分号隔
开
pathlist="C:Test;"
'------------------------------------------------------------------------↓要禁止的后缀名列表
(黑名单后缀)
'------------------------------------------------------------------------↓支持多路径,以分号隔
开
hjmlist="exe;com;bat;cmd;vbs;vbe;"
'------------------------------------------------------------------------↓禁止运行默认路径
keypath="HKLMSOFTWAREPoliciesMicrosoftWindowsSaferCodeIdentifiers0
Paths"
'------------------------------------------------------------------------↓开放运行默认路径
keyfile="HKLMSOFTWAREPoliciesMicrosoftWindowsSaferCodeIdentifiers26
2144Paths"
'------------------------------------------------------------------------↓分割后缀后列表
namelist=Split(hjmlist,";")
SetWshShell=Object("")
'------------------------------------------------------------------------↓取IE缓存路径并加入
路径列表
pathlist=d("HKCUSoftwareMicrosoftWindowsCurrentVersionE
xplorerShellFoldersCache")&"5;"&pathlist
pathlist=d("HKCUSoftwareMicrosoftWindowsCurrentVersionE
xplorerShellFoldersCache")&"5*;"&pathlist
'------------------------------------------------------------------------↓取临时目录路径并加
入路径列表
pathlist=d("HKEY_CURRENT_USEREnvironmentTemp")&";"
&pathlist
pathlist=d("HKEY_CURRENT_USEREnvironmentTemp")&"*;
"&pathlist
'------------------------------------------------------------------------↓分割路径列表
pathlists=Split(pathlist,";")
'------------------------------------------------------------------------↓分割开放运行的列表
filepaths=Split(filepath,";")
'------------------------------------------------------------------------↓循环路径列表
etekeypath
'------------------------------------------------------------------------↓开始写开放策略
Forw=1toint(UBound(filepaths))step1
'------------------------------------------------------------------------↓置随机种子
Randomize
'------------------------------------------------------------------------↓取6位随机数并转成
16进制
num6=Str2Hex(Int((899999*Rnd)+100000))
'------------------------------------------------------------------------↓写注册表项
tekeyfile&"{8156dd45-e093-4a3e-9755-"&num6&
"}",,"REG_SZ"
tekeyfile&"{8156dd45-e093-4a3e-9755-"&num6&
"}LastModified",0,"REG_BINARY"
tekeyfile&"{8156dd45-e093-4a3e-9755-"&num6&
"}Description","开放运行文件"&filepaths(w-1),"REG_SZ"
tekeyfile&"{8156dd45-e093-4a3e-9755-"&num6&
"}SaferFlags",0,"REG_DWORD"
tekeyfile&"{8156dd45-e093-4a3e-9755-"&num6&
"}ItemData",filepaths(w-1),"REG_EXPAND_SZ"
Next
'------------------------------------------------------------------------↓开放策略完毕
'------------------------------------------------------------------------↓开始写禁止策略
Foro=1toint(UBound(pathlists))step1
'------------------------------------------------------------------------↓循环后缀名列表
Forp=1toint(UBound(namelist))step1
'------------------------------------------------------------------------↓置随机种子
Randomize
'------------------------------------------------------------------------↓取6位随机数并转成
16进制
num6=Str2Hex(Int((899999*Rnd)+100000))
'------------------------------------------------------------------------↓写注册表项
tekeypath&"{8156dd45-e093-4a3e-9755-"&num6&
"}",,"REG_SZ"
tekeypath&"{8156dd45-e093-4a3e-9755-"&num6&
"}LastModified",0,"REG_BINARY"
tekeypath&"{8156dd45-e093-4a3e-9755-"&num6&
"}Description","禁止运行本路径中的"&namelist(p-1)&"文件","REG_SZ"
tekeypath&"{8156dd45-e093-4a3e-9755-"&num6&
"}SaferFlags",0,"REG_DWORD"
tekeypath&"{8156dd45-e093-4a3e-9755-"&num6&
"}ItemData",pathlists(o-1)&"*."&namelist(p-1),"REG_EXPAND_SZ"
Next
Next
'------------------------------------------------------------------------↓结束指定进程
exitprocess("")
'------------------------------------------------------------------------↓更新组策略
("gpupdate/force"),0
'------------------------------------------------------------------------↓刷新桌面
(",UpdatePerUrSystemParameters")
EndFunction
Functionexitprocess(exename)'结束指定进程,可以是程序名或程序路径
strComputer="."
SetobjWMIService=GetObject("winmgmts:"&strComputer&
"rootcimv2")
SetcolItems=ery("SELECT*FROM
Win32_process")
ForEachobjItemincolItems
ablePath<>""then'=========================
先判断命令路径是否符合
ifinstrs(ablePath,exename)=Falthen'命令路径符
合就结束
ate()
el
ifinstrs(,exename)=Falthen'命令路径不符合
时判断程序名
ate()
endif
endif
el
ifinstrs(,exename)=Falthen'命令路径为空时直
接判断程序名是否符合
ate()
endif
endif
Next
EndFunction
Functioninstrs(patrn,strng)'搜索指定字符是否存在
DimregEx,retVal
SetregEx=NewRegExp
n=patrn
Ca=True'是否区分大小写。
retVal=(strng)
IfretValThen
instrs=Fal
El
instrs=True
EndIf
EndFunction
FunctionStr2Hex(ByValstrHex)'返回16进制字符串
DimsHex,tempnum
Fori=1ToLen(strHex)
sHex=sHex&Hex(Asc(Mid(strHex,i,1)))
Next
Str2Hex=sHex
EndFunction
文件和文件夹VBS脚本大全
文件和文件夹vbs脚本大全枚举文件夹中的所有文件
描述
返回Scripts文件夹中所有文件的列表。如果计算机有多个文件夹(例如
C:Scripts和D:Scripts),则文件将从这些文件夹中的每一个返回。
脚本代码
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&strComputer
&"rootcimv2")
SetcolFiles=objWMIService._
ExecQuery("Select*fromCIM_DataFilewherePath=
'Scripts'")
ForEachobjFileincolFiles
Next
移动文件
描述
演示脚本使用FileSystermObject将文件从一个位置移到另一个位置。此脚
本必须运行在本地计算机上。
脚本代码
SetobjFSO=CreateObject("stemObject")
le"C:","D:Archive"
通过日期查找文件夹
描述
查找在2002年3月1日之后创建的所有文件。要修改此脚本,您必须修改
赋给变量dtmTargetDate的值中的下列项:
?
2002--将此项更改为目标年(如1999)。
?
03--将此项更改为目标月(01代表1月、02代表2月……12代表12月)
?
01--将此项更改为目标天(01代表该月的第一天、02代表第二天)。
?
-420--为了确保具有正确的结果,可以将此项更改为您所在的时区和格林
尼治标准时间之间的偏移量。如果您不知道此偏移量,可以使用脚本确定与格
林尼治标准时间的时区偏移量。
脚本代码
OnErrorResumeNext
dtmTargetDate="20.000000-420"
strComputer="."
SetobjWMIService=GetObject_
("winmgmts:"&"!"&strComputer&"rootcimv2")
SetcolFolders=ery_
("Select*fromWin32_DirectoryWhereCreationDate>
'"&_
dtmtargetDate&"'")
ForEachobjFolderincolFolders
Next
逐个字符地读取文本文件
描述
演示脚本使用FileSystemObject逐个字符地读取文本文件,并分别将这些
字符显示在屏幕上。此脚本必须运行在本地计算机上。
脚本代码
SetobjFSO=CreateObject("stemObject")
SetobjFile=xtFile("C:FSONewText
",1)
fStream
strCharacters=(1)
rCharacters
Loop
识别Shell对象动词
描述
为RecycleBin返回Shell对象动词(上下文菜单项)的列表。
脚本代码
ConstRECYCLE_BIN=&Ha&
SetobjShell=CreateObject("ation")
SetobjFolder=ace(RECYCLE_BIN)
SetobjFolderItem=
SetcolVerbs=
Fori=-1
(i)
Next
生成文件名
描述
演示脚本使用FileSystemObject的GetTempName方法生成随机文件名。
此脚本必须运行在本地计算机上。
脚本代码
SetobjFSO=CreateObject("stemObject")
Fori=1to10
strTempFile=pName
rTempFile
Next
创建和命名文本文件
描述
演示脚本使用FileSystemObject的GetTempName方法生成一个文件名,
然后根据该名称创建一个文件。
脚本代码
SetobjFSO=CreateObject("stemObject")
strPath="C:FSO"
strFileName=pName
strFullName=ath(strPath,strFileName)
SetobjFile=TextFile(strFullName)
File(strFullName)
创建网络共享
描述
创建一个名为FinanceShare的共享文件夹,将同时连接的最大数量设置为
25,然后添加共享描述。
脚本代码
ConstFILE_SHARE=0
ConstMAXIMUM_CONNECTIONS=25
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&strComputer
&"rootcimv2")
SetobjNewShare=("Win32_Share")
errReturn=_
("C:Finance","FinanceShare",FILE_SHARE,_
MAXIMUM_CONNECTIONS,"PublicsharefortheFinance
group.")
rReturn
创建文本文件
描述
演示脚本创建一个新的空文本文件。此脚本必须运行在本地计算机上。
脚本代码
SetobjFSO=CreateObject("stemObject")
SetobjFile=TextFile("C:")
创建文件夹
描述
演示脚本使用FileSystemObject创建一个文件夹。此脚本必须运行在本地
计算机上。
脚本代码
SetobjFSO=CreateObject("stemObject")
SetobjFolder=Folder("C:FSO")
发布共享文件夹
描述
在ActiveDirectory中发布共享文件夹,给该文件夹指派一个描述和三个
关键字。
脚本代码
SetobjComputer=GetObject_
("LDAP://OU=Finance,DC=fabrikam,DC=com")
SetobjShare=("volume",
"CN=FinanceShare")
"uNCName",
"[url=file://atl-dc-02/FinanceShare]atl-dc-02FinanceShare[/url]"
"Description","Publicshareforursinthe
Financegroup."
"Keywords",Array("finance","fiscal",
"monetary")
o
在文件上执行操作
描述
使用Shell对象打印C:Logs文件夹中的所有文件。
脚本代码
TargetFolder="C:Logs"
SetobjShell=CreateObject("ation")
SetobjFolder=ace(TargetFolder)
SetcolItems=
Fori=-1
(i).InvokeVerbEx("Print")
Next
按照从下到上的顺序读取文本文件
描述
演示脚本使用FileSystemObject读取一个文本文件,并以相反的顺序显示
该文本文件(即从最后一行开始,以第一行结束)。
脚本代码
DimarrFileLines()
i=0
SetobjFSO=CreateObject("stemObject")
SetobjFile=xtFile("C:",
1)
fStream
RedimPrervearrFileLines(i)
arrFileLines(i)=ne
i=i+1
Loop
Forl=Ubound(arrFileLines)toLBound(arrFileLines)Step
-1
rFileLines(l)
Next
创建新文件夹
描述
使用Shell对象创建名为C:Archive的新文件夹。
脚本代码
ParentFolder="C:"
tobjShell=CreateObject("ation")
tobjFolder=ace(ParentFolder)
der"Archive"
监视文件修改
描述
任何时候修改文件C:,临时事件消费程序都会发出警
告。最好运行在下。
脚本代码
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&_
strComputer&"rootcimv2")
SetcolMonitoredEvents=
tificationQuery_
("SELECT*FROM__InstanceModificationEventWITHIN10
WHERE"_
&"TargetInstanceISA'CIM_DataFile'and"_
&"='c:'")
Do
SetobjLatestEvent=ent
"File:"&
"Newsize:"&
ze
"Oldsize:"&
ze
Loop
监视文件删除
描述
任何时候从C:Scripts文件夹删除文件,临时事件消费程序都会发出警告。
最好运行在下。
脚本代码
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&_
strComputer&"rootcimv2")
SetcolMonitoredEvents=
tificationQuery_
("SELECT*FROM__InstanceDeletionEventWITHIN10WHERE
"_
&"TargetinstanceISA'CIM_DirectoryContainsFile'
and"_
&
"omp'Win32_=""c:scripts""'")
Do
SetobjLatestEvent=ent
mponent
Loop
复制文件夹
描述
演示脚本使用FileSystemObject将文件夹复制到新的位置。此脚本必须运
行在本地计算机上。
脚本代码
ConstOverWriteFiles=True
SetobjFSO=CreateObject("stemObject")
lder"C:Scripts","C:FSO",OverWriteFiles
监视文件创建
描述
任何时候在C:Scripts文件夹中创建文件,临时事件消费程序就发出警告。
最好在下运行。
脚本代码
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&_
strComputer&"rootcimv2")
SetcolMonitoredEvents=
tificationQuery_
("SELECT*FROM__InstanceCreationEventWITHIN10WHERE"_
&"TargetinstanceISA'CIM_DirectoryContainsFile'
and"_
&
"omp'Win32_=""c:scripts""'")
Do
SetobjLatestEvent=ent
mponent
Loop
复制文件
描述
演示脚本使用FileSystemObject来复制文件。此脚本必须运行在本地计算
机上。
脚本代码
ConstOverwriteExisting=True
SetobjFSO=CreateObject("stemObject")
le"C:","D:Archive",
OverwriteExisting
复制文件集
描述
演示脚本使用FileSystemObject将文件夹中的所有.txt文件复制到一
个新的位置。
脚本代码
ConstOverwriteExisting=True
SetobjFSO=CreateObject("stemObject")
le"C:FSO*.txt","D:Archive",
OverwriteExisting
解析路径名
描述
演示脚本使用FileSystemObject临时返回路径名信息,其中包括文件名、
文件扩展名、完整文件路径等等。此脚本必须运行在本地计算机上。
脚本代码
SetobjFSO=CreateObject("stemObject")
SetobjFile=e("")
"Absolutepath:"&
olutePathName(objFile)
"Parentfolder:"&
entFolderName(objFile)
"Filename:"&eName(objFile)
"Baname:"&eName(objFile)
"Extensionname:"&
ensionName(objFile)
将文本文件读入数组
描述
演示代码使用VBScriptSplit命令从逗号分隔的值文件读取一行,然后将
该行中的各个项放入一个数组。
脚本代码
ConstForReading=1
SetobjFSO=CreateObject("stemObject")
SetobjTextFile=xtFile_
("c:",ForReading)
fStream
strNextLine=ne
arrServiceList=Split(strNextLine,",")
"Servername:"&arrServiceList(0)
Fori=1toUbound(arrServiceList)
"Service:"&arrServiceList(i)
Next
Loop
解压缩文件夹
描述解压缩文件夹C:Scripts。
脚本代码
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&strComputer
&"rootcimv2")
SetcolFolders=ery_
("Select*fromWin32_Directorywherename=
'c:Scripts'")
ForEachobjFolderincolFolders
errResults=ress
rResults
Next
将网络共享映射到本地文件夹
描述
使用查询的WMIAssociators返回计算机上所有网络共享的本地路径。
脚本代码
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&strComputer
&"rootcimv2")
SetcolShares=ery_
("Associatorsof{Win32_='Scripts'}Where"
_
&"AssocClass=Win32_ShareToDirectory")
ForEachobjFolderincolShares
Next
将所有的网络共享映像到本地文件夹
描述
使用查询的WMIAssociators返回名为Scripts的网络共享的本地路径。
脚本代码
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&strComputer
&"rootcimv2")
SetcolShares=ery_
("Select*FromWin32_Share")
ForEachobjShareincolShares
SetcolAssociations=ery_
("Associatorsof{Win32_='"&
&"'}"_
&"WhereAssocClass=Win32_ShareToDirectory")
ForEachobjFolderincolAssociations
&vbTab&
Next
Next
枚举文件夹属性
描述
演示脚本使用FileSystemObject枚举文件夹的属性。此脚本必须运行在本
地计算机上。
脚本代码
SetobjFSO=CreateObject("stemObject")
SetobjFolder=der("C:Scripts")
"Datecreated:"&eated
"Datelastaccesd:"&
stAccesd
"Datelastmodified:"&
stModified
"Drive:"&
"Isrootfolder:"&Folder
"Name:"&
"Parentfolder:"&Folder
"Path:"&
"Shortname:"&ame
"Shortpath:"&ath
"Size:"&
"Type:"&
检验文件夹是否存在
描述
演示脚本使用FileSystemObject检验文件夹是否存在。如果文件夹存在,
此脚本就绑定到该文件夹。此脚本必须运行在本地计算机上。
脚本代码
SetobjFSO=CreateObject("stemObject")
Exists("C:FSO")Then
SetobjFolder=der("C:FSO")
El
"Folderdoesnotexist."
EndIf
检验文件是否存在
描述
演示脚本使用FileSystemObject检验文件是否存在。此脚本必须运行在本
地计算机上。
脚本代码
SetobjFSO=CreateObject("stemObject")
ists("C:")Then
SetobjFolder=
e("C:")
El
"Filedoesnotexist."
EndIf
枚举一组特定的文件夹
描述
返回计算机上所有隐藏文件夹的列表。
脚本代码
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&strComputer
&"rootcimv2")
SetcolFiles=ery_
("Select*fromWin32_DirectoryWhereHidden=True")
ForEachobjFileincolFiles
Next
枚举文件夹中的所有文件
描述
返回Scripts文件夹中所有文件的列表。如果计算机有多个文件夹(例如
C:Scripts和D:Scripts),则文件将从这些文件夹中的每一个返回。
脚本代码
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&strComputer
&"rootcimv2")
SetcolFiles=objWMIService._
ExecQuery("Select*fromCIM_DataFilewherePath=
'Scripts'")
ForEachobjFileincolFiles
Next
枚举网络共享
描述
列出计算机上所有的共享文件夹。
脚本代码
strComputer="."
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&strComputer
&"rootcimv2")
SetcolShares=ery("Select*from
Win32_Share")
ForeachobjShareincolShares
"AllowMaximum:"&vbTab&
aximum
"Caption:"&vbTab&n
"MaximumAllowed:"&vbTab&
mAllowed
"Name:"&vbTab&
"Path:"&vbTab&
"Type:"&vbTab&
Next
检索扩展的文件属性
描述
使用Shell对象返回文件夹C:Scripts中所有文件的扩展属性。
脚本代码
DimarrHeaders(34)
SetobjShell=CreateObject("ation")
SetobjFolder=ace("C:Scripts")
Fori=0to33
arrHeaders(i)=
ailsOf(,i)
Next
Fori=0to33
&vbtab&arrHeaders(i)_
&":"&ailsOf(strFileName,i)
Next
Next
检索文件版本信息
描述
演示脚本使用FileSystemObject检索.dll文件的版本。此脚本必须运行
在本地计算机上。
脚本代码
SetobjFSO=CreateObject("stemObject")
eVersion("c:")
枚举已发布共享
描述
在ActiveDirectory中枚举所有已经发布的共享文件夹。
脚本代码
ConstADS_SCOPE_SUBTREE=2
SetobjConnection=CreateObject("tion")
SetobjCommand=CreateObject("d")
er="ADsDSOObject"
"ActiveDirectoryProvider"
Connection=objConnection
dText="SelectName,unCName,ManagedBy
from"_
&"'LDAP://DC=Fabrikam,DC=com'where
objectClass='volume'"
ties("Timeout")=30
ties("Searchscope")=ADS_SCOPE_SUBTREE
ties("CacheResults")=Fal
SetobjRecordSet=e
rst
"ShareName:"&
("Name").Value
"UNCName:"&
("uNCName").Value
"ManagedBy:"&
("ManagedBy").Value
xt
Loop
#标题#:VB进制转换
用途:将十进制转化为二进制
输入:Dec(十进制数)
输入数据类型:Long
输出:DEC_to_BIN(二进制数)
输出数据类型:String
输入的最大数为2147483647,输出最大数为111111111(31
个1)
PublicDEC_to_BIN(DecAsLong)AsString
DEC_to_BIN=""
DoWhileDec>0
DEC_to_BIN=DecMod2&DEC_to_BIN
Dec=Dec2
Loop
End
用途:将二进制转化为十进制
输入:Bin(二进制数)
输入数据类型:String
输出:BIN_to_DEC(十进制数)
输出数据类型:Long
输入的最大数为111111111(31个1),输出最大数为
2147483647
PublicBIN_to_DEC(ByValBinAsString)AsLong
DimiAsLong
Fori=1ToLen(Bin)
BIN_to_DEC=BIN_to_DEC*2+Val(Mid(Bin,i,1))
Nexti
End
用途:将十六进制转化为二进制
输入:Hex(十六进制数)
输入数据类型:String
输出:HEX_to_BIN(二进制数)
输出数据类型:String
输入的最大数为2147483647个字符
PublicHEX_to_BIN(ByValHexAsString)AsString
DimiAsLong
DimBAsString
Hex=UCa(Hex)
Fori=1ToLen(Hex)
SelectCaMid(Hex,i,1)
Ca"0":B=B&"0000"
Ca"1":B=B&"0001"
Ca"2":B=B&"0010"
Ca"3":B=B&"0011"
Ca"4":B=B&"0100"
Ca"5":B=B&"0101"
Ca"6":B=B&"0110"
Ca"7":B=B&"0111"
Ca"8":B=B&"1000"
Ca"9":B=B&"1001"
Ca"A":B=B&"1010"
Ca"B":B=B&"1011"
Ca"C":B=B&"1100"
Ca"D":B=B&"1101"
Ca"E":B=B&"1110"
Ca"F":B=B&"1111"
EndSelect
Nexti
WhileLeft(B,1)="0"
B=Right(B,Len(B)-1)
Wend
HEX_to_BIN=B
End
用途:将二进制转化为十六进制
输入:Bin(二进制数)
输入数据类型:String
输出:BIN_to_HEX(十六进制数)
输出数据类型:String
输入的最大数为2147483647个字符
PublicBIN_to_HEX(ByValBinAsString)AsString
DimiAsLong
DimHAsString
IfLen(Bin)Mod4<>0Then
Bin=String(4-Len(Bin)Mod4,"0")&Bin
EndIf
Fori=1ToLen(Bin)Step4
SelectCaMid(Bin,i,4)
Ca"0000":H=H&"0"
Ca"0001":H=H&"1"
Ca"0010":H=H&"2"
Ca"0011":H=H&"3"
Ca"0100":H=H&"4"
Ca"0101":H=H&"5"
Ca"0110":H=H&"6"
Ca"0111":H=H&"7"
Ca"1000":H=H&"8"
Ca"1001":H=H&"9"
Ca"1010":H=H&"A"
Ca"1011":H=H&"B"
Ca"1100":H=H&"C"
Ca"1101":H=H&"D"
Ca"1110":H=H&"E"
Ca"1111":H=H&"F"
EndSelect
Nexti
WhileLeft(H,1)="0"
H=Right(H,Len(H)-1)
Wend
BIN_to_HEX=H
End
用途:将十六进制转化为十进制
输入:Hex(十六进制数)
输入数据类型:String
输出:HEX_to_DEC(十进制数)
输出数据类型:Long
输入的最大数为7FFFFFFF,输出的最大数为2147483647
PublicHEX_to_DEC(ByValHexAsString)AsLong
DimiAsLong
DimBAsLong
Hex=UCa(Hex)
Fori=1ToLen(Hex)
SelectCaMid(Hex,Len(Hex)-i+1,1)
Ca"0":B=B+16^(i-1)*0
Ca"1":B=B+16^(i-1)*1
Ca"2":B=B+16^(i-1)*2
Ca"3":B=B+16^(i-1)*3
Ca"4":B=B+16^(i-1)*4
Ca"5":B=B+16^(i-1)*5
Ca"6":B=B+16^(i-1)*6
Ca"7":B=B+16^(i-1)*7
Ca"8":B=B+16^(i-1)*8
Ca"9":B=B+16^(i-1)*9
Ca"A":B=B+16^(i-1)*10
Ca"B":B=B+16^(i-1)*11
Ca"C":B=B+16^(i-1)*12
Ca"D":B=B+16^(i-1)*13
Ca"E":B=B+16^(i-1)*14
Ca"F":B=B+16^(i-1)*15
EndSelect
Nexti
HEX_to_DEC=B
End
用途:将十进制转化为十六进制
输入:Dec(十进制数)
输入数据类型:Long
输出:DEC_to_HEX(十六进制数)
输出数据类型:String
输入的最大数为2147483647,输出最大数为7FFFFFFF
PublicDEC_to_HEX(DecAsLong)AsString
DimaAsString
DEC_to_HEX=""
DoWhileDec>0
a=CStr(DecMod16)
SelectCaa
Ca"10":a="A"
Ca"11":a="B"
Ca"12":a="C"
Ca"13":a="D"
Ca"14":a="E"
Ca"15":a="F"
EndSelect
DEC_to_HEX=a&DEC_to_HEX
Dec=Dec16
Loop
End
用途:将十进制转化为八进制
输入:Dec(十进制数)
输入数据类型:Long
输出:DEC_to_OCT(八进制数)
输出数据类型:String
输入的最大数为2147483647,输出最大数为
PublicDEC_to_OCT(DecAsLong)AsString
DEC_to_OCT=""
DoWhileDec>0
DEC_to_OCT=DecMod8&DEC_to_OCT
Dec=Dec8
Loop
End
用途:将八进制转化为十进制
输入:Oct(八进制数)
输入数据类型:String
输出:OCT_to_DEC(十进制数)
输出数据类型:Long
输入的最大数为,输出的最大数为2147483647
PublicOCT_to_DEC(ByValOctAsString)AsLong
DimiAsLong
DimBAsLong
Fori=1ToLen(Oct)
SelectCaMid(Oct,Len(Oct)-i+1,1)
Ca"0":B=B+8^(i-1)*0
Ca"1":B=B+8^(i-1)*1
Ca"2":B=B+8^(i-1)*2
Ca"3":B=B+8^(i-1)*3
Ca"4":B=B+8^(i-1)*4
Ca"5":B=B+8^(i-1)*5
Ca"6":B=B+8^(i-1)*6
Ca"7":B=B+8^(i-1)*7
EndSelect
Nexti
OCT_to_DEC=B
End
用途:将二进制转化为八进制
输入:Bin(二进制数)
输入数据类型:String
输出:BIN_to_OCT(八进制数)
输出数据类型:String
输入的最大数为2147483647个字符
PublicBIN_to_OCT(ByValBinAsString)AsString
DimiAsLong
DimHAsString
IfLen(Bin)Mod3<>0Then
Bin=String(3-Len(Bin)Mod3,"0")&Bin
EndIf
Fori=1ToLen(Bin)Step3
SelectCaMid(Bin,i,3)
Ca"000":H=H&"0"
Ca"001":H=H&"1"
Ca"010":H=H&"2"
Ca"011":H=H&"3"
Ca"100":H=H&"4"
Ca"101":H=H&"5"
Ca"110":H=H&"6"
Ca"111":H=H&"7"
EndSelect
Nexti
WhileLeft(H,1)="0"
H=Right(H,Len(H)-1)
Wend
BIN_to_OCT=H
End
用途:将八进制转化为二进制
输入:Oct(八进制数)
输入数据类型:String
输出:OCT_to_BIN(二进制数)
输出数据类型:String
输入的最大数为2147483647个字符
PublicOCT_to_BIN(ByValOctAsString)AsString
DimiAsLong
DimBAsString
Fori=1ToLen(Oct)
SelectCaMid(Oct,i,1)
Ca"0":B=B&"000"
Ca"1":B=B&"001"
Ca"2":B=B&"010"
Ca"3":B=B&"011"
Ca"4":B=B&"100"
Ca"5":B=B&"101"
Ca"6":B=B&"110"
Ca"7":B=B&"111"
EndSelect
Nexti
WhileLeft(B,1)="0"
B=Right(B,Len(B)-1)
Wend
OCT_to_BIN=B
End
用途:将八进制转化为十六进制
输入:Oct(八进制数)
输入数据类型:String
输出:OCT_to_HEX(十六进制数)
输出数据类型:String
输入的最大数为2147483647个字符
PublicOCT_to_HEX(ByValOctAsString)AsString
DimBinAsString
Bin=OCT_to_BIN(Oct)
OCT_to_HEX=BIN_to_HEX(Bin)
End
用途:将十六进制转化为八进制
输入:Hex(十六进制数)
输入数据类型:String
输出:HEX_to_OCT(八进制数)
输出数据类型:String
输入的最大数为2147483647个字符
PublicHEX_to_OCT(ByValHexAsString)AsString
DimBinAsString
Hex=UCa(Hex)
Bin=HEX_to_BIN(Hex)
HEX_to_OCT=BIN_to_OCT(Bin)
End
VB自带函数:
十进制转八进制:Oct(num)
十六进制转八进制:oct("&H"&num)
十进制转十六进制:hex(num)
八进制转十六进制:hex("&O"&num)
十六进制转换为十进制
DimstrAsString
str=
=CLng("&H"&str)
#标题#:如何提取电脑硬件信息,如主板、硬盘等的序列号
PublicTypeCPUInfo
AddressWidthAsString
ArchitectureAsString
AvailabilityAsString
CaptionAsString
ConfigManagerErrorCodeAsString
ConfigManagerUrConfigAsString
CpuStatusAsString
CreationClassNameAsString
CurrentClockSpeedAsString
CurrentVoltageAsString
DataWidthAsString
DescriptionAsString
DeviceIDAsString
ErrorClearedAsString
ErrorDescriptionAsString
ExtClockAsString
FamilyAsString
InstallDateAsString
L2CacheSizeAsString
L2CacheSpeedAsString
LastErrorCodeAsString
LevelAsString
LoadPercentageAsString
ManufacturerAsString
MaxClockSpeedAsString
NameAsString
OtherFamilyDescriptionAsString
PNPDeviceIDAsString
PowerManagementCapabilitiesAsString
PowerManagementSupportedAsString
ProcessorIdAsString
ProcessorTypeAsString
RevisionAsString
RoleAsString
SocketDesignationAsString
StatusAsString
StatusInfoAsString
SteppingAsString
SystemCreationClassNameAsString
SystemNameAsString
UniqueIdAsString
UpgradeMethodAsString
VersionAsString
VoltageCapsAsString
EndType
'获取计算机主板信息
FunctionComput()
OnErrorResumeNext
strComputer="."
SetobjWMIService=GetObject("winmgmts:"&strComputer&
"rootcimv2")
SetcolItems=ery("Select*fromWin32_BaBoard",,
48)
ForEachobjItemIncolItems
"Caption:"&n
"ConfigOptions:"&Options
"CreationClassName:"&
onClassName
"Depth:"&
"Description:"&ption
"Height:"&
"HostingBoard:"&gBoard
"HotSwappable:"&ppable
"InstallDate:"&lDate
"Manufacturer:"&cturer
"Model:"&
"Name:"&
"OtherIdentifyingInf"&dentifyingInfo
"PartNumber:"&mber
"PoweredOn:"&dOn
"Product:"&t
"Removable:"&ble
"Replaceable:"&eable
"RequirementsDescription:"&
ementsDescription
"RequiresDaughterBoard:"&
esDaughterBoard
"SerialNumber:"&Number
"SKU:"&
"SlotLayout:"&yout
"SpecialRequirements:"&
lRequirements
"Status:"&
"Tag:"&
"Version:"&n
"Weight:"&
"Width:"&
Next
EndFunction
'获取CPU信息
FunctionGetCPUInfo()AsCPUInfo
OnErrorResumeNext
DimobjWMIServiceAsObject
DimobjItemAsObject
DimcolItemsAsObject
SetobjWMIService=GetObject("winmgmts://./root/cimv2")
SetcolItems=ery("Select*fromWin32_Processor",,
48)
ForEachobjItemIncolItems
WithGetCPUInfo
.AddressWidth=sWidth
.Architecture=ecture
.Availability=bility
.Caption=n
.ConfigManagerErrorCode=ManagerErrorCode
.ConfigManagerUrConfig=ManagerUrConfig
.CpuStatus=tus
.CreationClassName=onClassName
.CurrentClockSpeed=tClockSpeed
.CurrentVoltage=tVoltage
.DataWidth=dth
.Description=ption
.DeviceID=ID
.ErrorCleared=leared
.ErrorDescription=escription
.ExtClock=ck
.Family=
.InstallDate=lDate
.L2CacheSize=objItem.L2CacheSize
.L2CacheSpeed=objItem.L2CacheSpeed
.LastErrorCode=rorCode
.Level=
.LoadPercentage=rcentage
.Manufacturer=cturer
.MaxClockSpeed=ckSpeed
.Name=
.OtherFamilyDescription=amilyDescription
.PNPDeviceID=iceID
.PowerManagementCapabilities=
anagementCapabilities
.PowerManagementSupported=anagementSupported
.ProcessorId=sorId
.ProcessorType=sorType
.Revision=on
.Role=
.SocketDesignation=Designation
.Status=
.StatusInfo=Info
.Stepping=ng
.SystemCreationClassName=CreationClassName
.SystemName=Name
.UniqueId=Id
.UpgradeMethod=eMethod
.Version=n
.VoltageCaps=eCaps
EndWith
Next
EndFunction
本文发布于:2022-11-24 08:32:10,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/10608.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |