2024年3月7日发(作者:)

VBS教程(文本版)程序开始我们的练习。什么?不知道是什!”“Hello就像多数计算机教程一样 ,我们从 World执行这个程序的结么意思?就是说大部分的计算机程序设计教程开篇入门都是编写一个小程序, Hello World!好了,我们开始吧。果就是在计算机的屏幕上或者dos窗口中显示一行文字:

”程序,在编辑窗口填写:打开你的“记事本

msgbox Hello World!

一栏中填写””一栏设为桌面,在“文件名“文件”菜单,单击“保存”,把保存在“然后用鼠标单击,”窗口,在桌面上寻找你刚刚保存的“单击“保存”就可以了。然后最小化记事本,作者:临汾市外事旅游局[确定”,对话框消失了。然后双击。看到弹出的对话框了没有,单击“ 难看了点,不过确实是你编写的第一个脚本程序。薛靖澜,转载请注明出处]

你保存到其他的地方完全说明之一:上面的操作中,保存位置放在桌面,仅仅是为了执行方便,自己保存的当然知道保存在没有问题,只要你知道你保存在什么地方就可以了,什么?是废话,文件名你可以随意填写,不一定那里了。不,自己保存的文件自己找不到的人我见的多了去了。不知什么?的文件命名规则就可以了,只要符合Windows但是扩展名必须是vbs,非要写kk,脚本文件命名时必须是:后的那部分,简单说,就是vbs道什么是扩展名?就是文件名中“.” xxx你随意。,其中

说明之二:在记事本编辑窗口中写的这行是什么意思?

内建的函数,每一个函数都可以完成一定的功能,你只需要按照语法要求,在VBSMsgbox是当然函数执行的结果我们这部分内容我们称为参数,函数的相应部分填写相应的内容就可以了,你不用了解函数是怎可以有参数也可以没有。称为返回值,一个函数可以有返回值也可以没有, 么运作的,只要了解这个函数能干什么就行了。

对话框的标题Msgbox语法:獭执硯?对话框内容, ,

你不妨用记事本打开刚才的文件在编辑窗口中输入:

獭执硯尠效汬?潗汲Ⅴ???系统提示

执行一下,看看效果和位置。

说明之三:如果执行失败,看看你的标点符号,所有的标点符号必须是在英文状态下输入的。

当然,这个脚本实在是太简单了,甚至连最简单的交互都没有,所以你可以把脚本这样修改一下:

Dim name

慮敭?灮瑵潢?请输入你的名字尺尬名称)

您的名字是獍执硯?慮敭??

保存执行一下,看到弹出的对话框了么?填入你的名字,点确定,看到结果了吗?

是定义变量的语句说明之一:第一句是定义变量,dim

,其格式为:dim 变量1,变量2……

只有一种变量类型,所以不用声明变量类型。系统会自动分辨变量类型。Vbs

是说明之二:inputboxVBS内建的函数,可以接受输入的内容,其语法格式为:

) 湉異扴硯尨对话框内容?对话框标题

第二句的意思是接受用户的输入,并把输入结果传递给变量name。

你可以编写到此脚本基本的输入输出函数都有了,已经可以完成一些比较简单的功能了,好了, 中,然后重新启动计算机看看结果。启动程序”—>“”一个简单的脚本,然后拷贝的“

脚本编程简明教程之三◎Vbs —Vbs的基本语法(牢记)

VBScript基础知识

一、变量

、所有单引号后面的内容都被解释为注释。1

中对VBScriptVBScript中,变量的命名规则遵循标准的命名规则,需要注意的是:在2、在变量、方法、函数和对象的引用是不区分大小写的。在申明变量时,要显式地申明一个变量,需你要创建一个变量,并将变量名称跟在其后。申明多个同DIm来告诉VBScript要使用关键字。类型变量,可以用逗号分隔。注意:VBScript中不允许在申明变量的时候同时给变量赋值 但是允许在一行代码内同时对两个变量进行赋值,中间用冒号分隔。

。Option Explicit来告诉宿主变量必须先声明后使用3、你可以使用

4、VBScript在定义时只有一种变量类型,在实际使用中需要使用类型转换函数来将变量转换成相应的变量类型。

Cbool函数将变量转换成布尔值;

Cbyte函数将变量转换为0到255之间的整数。

Ccur函数、Cdbl函数和Csng函数将变量转换为浮点数值,前者只精确到小数点后四位,后两 者要更加精确,数值的范围也要大的多。.

函数将变量转换为日期值。Cdate

函数将变量转换为整数,后者的范围比前者要大的多。Cint函数和Clng

函数将变量转换为字符串。Cstr

二、数组

数组需要注意的是:数组的定义与变量非常类似,只需要在变量后描述这个数组的个数和维数。也就是说你以要定义一个有十个数据的开始,而以数组定义中数值减一结束。的下标总是从0),同样,当你要访问第五个元素时,实际的代码是(9array数组,将这样书写代码:dim

。定义二维数组如dim arr2(3,2)当然,你可以通过不指定数组的个数和维数来申明array(4)。来改变数组。注意,在改变数组动态数组。等到数组的个数和维数固定后,使用关键字redim preserve来保护数据。例如:的大小时,数组的数据会被破坏,使用关键字

array括号个数逗号维数括号RedIm空格空格preserve 例程:dim arr1(4,3)

arr1(0,0)=12

msgbox arr1(0,0),,value0 ‘对话框中输出二维数组第一个元素的值 三、操作符

。,取模使用的在VBScriptMod运算符中,加减乘除都是我们常用的符号,乘方使用的是 ^

在比较操作符中,等于、小于、大于、小于等于、大于等于都与我们常用的符号是一致的,而不 等于是小于和大于连用。

>OR;—或操作>AND 非操作—>NOT —逻辑运算符为:和操作

; & 来连接字符串,一般使用&操作符 你可以使用操作符+ 和操作符

用来比较对象,例如按钮对象,如果对象是同一类型,结果另外还有一个比较特殊的操作符Is 就是真,如果对象不是同一类型,结果就是假。

select case语句两种形式四、条件语句主要有if……then语句和

if……then语句中,其基本形式为:在

If 条件 then

处理条件的语句;

…….

End if

,else基本形式只能对单个条件进行验证,如果有两个条件,则需要在基本形式中添加单行语句 如果还有更多的条件需要验证,则需要添加语句

then Else if 条件

处理条件语句

select case语句中,其基本形式为:在

Select case 变量

条件值 Case

处理条件语句

并对上两句进行重复

最后一句应为

case else

处理语句

放在最后一行当然不要忘记将条件结束语句End select

lcase注意:在执行字符串比较时,需要特别注意大小写,一般情况下,我们在比较前,使用 函数将字符串转换成小写,使用ucase函数将字符串转换成大写。

五、循环控制语句

循环、循环、do……whiledo……until循环、循环控制语句有for……nextfor……each循环、 while循环五种形式。

那么使用首先要对循环条件进行判断,如果循环次数是有固定次数的,在使用循环控制语句前, 循环,其结构为:For……next

计数器变量=开始计数值 to 最后计数值 For

执行循环体

Next

其结构循环,for……each如果是需要对数组或对象集合中的每一个元素进行判断,则需要使用 为:

in For each 循环计数变量要查看的对象或数组

执行处理语句

Next

来退出循环注意:在上述两种循环中随时可以使用exit for

如果你希望在条件满足时执行一段代码则使用语句,结构为:do……while

Do while 条件

执行循环体

Loop

,结构为:如果你希望在条件不满足时执行代码,则使用do……until语句

条件Do until

执行循环体

Loop

exit do来退出循环当然,在这两种循环语句中,你可以使用

最后一种循环语句是条件满足时一直执行循环,

条件While

执行循环体

Wend

六、使用过程

常用的过程有两种,一种为函数,给调用者返回值,一种为子程序,无返回值,还有一种叫事件的特殊子程序,用的比较少。

函数的基本定义方法为:

函数名称(参数列表)Function

函数代码

用来返回值函数名称=某值 ‘

end function

子程序一些都类似,不过没有返回值

在定义子程序的时候,参数列表要加括号,但在调用子程序的时候,参数列表不加注意:尽管 。另外,子程序不能在表达式中使用。括号,括号只在函数中使用

而函数只能出现在赋值语句的右边,或者表达式中,函数不能直接使用,如果必须直接使用函 语句调用,并取消返回值数,则必须使用call

脚本编程简明教程之四◎Vbs Vbs运行外部程序?如何利用 —

也来定义变量、过程和函数,vbs Vbs只提供了编程的一个基本框架,用户可以使用Vbs系统内部的部件,没有提供任何命令来访问Windows提供了一些内部函数和对象,但是Vbs它提供了一条极为方便、功能也相Vbs虽然不能自己完成这些任务,但是但是值得庆幸的是,对象,系统内安装的所有com当强的命令——CreateObject,这条命令可以访问windows 并且可以调用这些部件中存放的命令。

个小文本,我首先要对每一个文本的语法进行查错1000于是问题解决了,比如说,我手头有和修改,然后按照预先定义好的规则对这些文本进行排序,最后将这些文本合并成为一个文件。中,然后利用里面的除错WORD正常情况下,我们需要把打开第一个小文本,然后把它复制到遍,然后再将1000功能进行除错和修改,然后再导入到EXCEL中进行排序,将这个过程重复和了Vbs量工作太大了。有燥在本一本得所有到的文复制到个大文中。实是太枯、,问题得到解决,我只需要找到相应的模块,调用相应的功能就可以了,作为脚CreateObject 1000次,本就是它的拿手好戏。本,把一个枯燥的过程重复

——只启动一个程序开始。好了,我们走入正题,从最简单的

Vbs的宿主,本身包含了几个个常用对象:WSH也就是用来解析

提供一整套文件系统操作函数stemObject 、—> 1

、nary —> 2用来返回存放键值对的字典对象

3、 —> 提供一套读取系统信息的函数,如读写注册表、查找指定文件的路 环境变量,读取链接中的设置DOS径、读取.

Scripting所有提供网络连接和远程打印机管理的函数。(其中,4、k —>

文件ript对象都存放在对象都存放在文件中,所有的 中。)

让我们先连接一下对象看看,在记事本的编辑窗口中输入:现在我们需要的是第三个对象,好了,

Set objShell = CreateObject(“”)

“notepad”

同样,保存执行。那么看到了一个什么样的结果呢?在桌面上又打开了一个记事本。

那么什么指令,凡是将一对象引用赋给变量,就需要使用set说明之一:Set是Vbs关键字。是变量名,可是对象引用呢?凡是字符串、数值、布尔值之外的变量都是对象引用。Objshell 以随意修改。

,后凡是正确引用的对象,其本身内置有函数和变量,其引用方法为在变量后加“. ”说明之二:中的运行外部的意思就是调用紧跟其实现功能的函数就可以了。

,这是计算器是记事本程序的文件名。当然你也可以改成“calc”——run,notepad程序的函数的文件名,等等吧,所有可执行文件的文件名都可以。但是需要是word的文件名,winword如果你要执行的可执行文件存放的地方不是程序安装的常用路径,一般情况下,需注意的是,在运行解析时,遇到空格会停止,解决的方法是使用双引号,要提供合法的路径名,但是run ,代码为:例如:在我的机器上运行qq

注:三个引号 C:Program ‘

我们再进一步,启动两个程序会如何呢?好,

输入如下代码:

Set objShell = CreateObject(“”)

“notepad”

“calc”

执行会如何呢?两个程序基本上同时启动了。如果我们需要先启动notepad再启动calc将如何呢?很简单在需要顺序执行的代码后加 , , True参数就可以了。

好了输入代码:

Set objShell = CreateObject(“”)

“notepad” ,,true

“calc”

看看执行的结果怎么样吧!

函数有三个参数,第一个参数是你要执行的程序的路径,第二个程序是窗口的形式,run总结:表示激活程序并且显30是在后台运行;1表示正常运行;2表示激活程序并且显示为最小化;第三个参数是表示这

个脚本 10示为最大化;一共有个这样的参数我只列出了4个最常用的。 是等待还是继续执行,如果设为了true,脚本就会等待调用的程序退出后再向后执行。表示成功执行,0其实,run作为函数,前面还有一个接受返回值的变量,一般来说如果返回为, 如果不为0,则这个返回值就是错误代码,可以通过这个代码找出相应的错误

错误处理◎Vbs脚本编程简明教程之五—

目录或者或者脚本找不到必需的文件、引发错误的原因有很多,例如用户输入了错误类型的值,本身也提供了一些基本技术来进行错误驱动器,我们可以使用循环技术来处理错误,但是VBS 的检测和处理。

最常见的错误是运行时错误,也就是说错误在脚本正在运行的时候发生,是脚本试图进行非1、中,任何运行时错误都是致命的,此时,脚本将停vbs例如零被作为除数。在法操作的结果。 止运行,并在屏幕上显示一个错误消息。你可以在脚本的开头添加

On Error Resume Next

在运行时跳过发生错误的语句,紧接着执行跟在它后面的语句。这行语句可以告诉vbs

发生错误时,该语句将会把相关的错误号、错误描述和相关源代码压入错误堆栈。

脚本在发生错误时停止运行,但是它并不On Error Resume Next语句可以防止vbs2、虽然用来检查错误条件并在错误发生你需要在脚本中增加一些语句,能真正处理错误,要处理错误, 时处理它。

vbscript提供了一个对象err对象,他有两个方法clear,raise,5个属性:description,helpcontext,helpfile,number,source

err对象不用引用实例,可以直接使用,例如:

on error resume next

a=11

b=0

c=a/b

if <>0 then

& ption &

end if

修改注册表 —◎Vbs脚本编程简明教程之六

Vbs中修改注册表的语句主要有:

1、读注册表的关键词和值:

可以通过把关键词的完整路径传递给wshshell对象的regread方法。例如:

set ws=object()

v=d(HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunnwiz)

v

2、写注册表

使用wshshell对象的regwrite方法。例子:

path=HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun

set ws=object()

t=te(path & jj,hello)

这样就把

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunjj这个键值改成了hello.不过要注意:这个键值一定要预先存在。

如果要创建一个新的关键词,同样也是用这个方法。

path=HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionrunsssa2000love

set ws=object()

val=te(path,

enboy)

val=d(path)

val

删除关键字和值

就可以了 使用regdelete方法,把完整的路径传递给regdelete

例如 val=ete(path)

,如果不加斜线,就会删除整个”如果要删除关键词的值的话注意, 一定要在路径最后加上“ 关键词。

◎Vbs脚本编程简明教程之七—FSO的常见对象和方法

文件系统是所有操作系统最重要的部分之一,脚本经常会需要对文件及文件夹进行访问和管理,,这个对象特别中对桌面和文件系统进行访问的顶级对象是VbsFileSystemObject(FSO)在 进行文件操作的核心。此节内容应了如指掌。复杂,是vbs

FSO包含的常见对象有:

Drive对象:包含储存设备的信息,包括硬盘、光驱、ram盘、网络驱动器

Drives集合:提供一个物理和逻辑驱动器的列表

File对象:检查和处理文件

集合:提供一个文件夹中的文件列表Files

Folder对象:检查和处理文件夹

Folders集合:提供文件夹中子文件夹的列表

Textstream对象:读写文本文件

FSO的常见方法

BulidPath:把文件路径信息添加到现有的文件路径上

:复制文件CopyFile

CopyFolder:复制文件夹

CreateFolder:创建文件夹

CreateTextFile:创建文本并返回一个TextStream对象

DeleteFile:删除文件

DeleteFolder:删除文件夹及其中所有内容

DriveExits:确定驱动器是否存在

FileExits:确定一个文件是否存在

FolderExists:确定某文件夹是否存在

GetAbsolutePathName:返回一个文件夹或文件的绝对路径

GetBaseName:返回一个文件或文件夹的基本路径

GetDrive:返回一个dreve对象

GetDriveName:返回一个驱动器的名字

GetExtensionName:返回扩展名

GetFile:返回一个file对象

GetFileName:返回文件夹中文件名称

GetFolder:返回一个文件夹对象

GetParentFolderName:返回一个文件夹的父文件夹

GetSpecialFolder:返回指向一个特殊文件夹的对象指针

GetTempName:返回一个可以被createtextfile使用的随机产生的文件或文件夹的名称

MoveFile:移动文件

MoveFolder:移动文件夹[作者:临汾市外事旅游局薛靖澜,转载请注明出处]

对象TextStream:打开一个存在的文件并返回一个OpenTextFile

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

1、使用fso

由于fso不是wsh的一部分,所以我们需要建立他的模型

例如set fs=object(“stemobject”)

这样就建立了fso的模型。如果要释放的话也很简单,set fs=nothing

2、使用文件夹

在创建前,我们一般需要检查该文件夹是否存在例如:

dim fs,s //定义fs、s两个变量

set fs=object(“stemobject”) //fs为FSO实例

if (exists(“c:temp”)) then //判断c:temp文件夹是否存在

s=”is available”

else

s=”not exist”

set foldr=folder(“c:temp”) //不存在则建立

end if

删除:set fs=object(“stemobject”)

folder(“c:windows”)

拷贝: set fs=object(“stemobject”)

lder “c:data” “d:data”

注意:如果c:data 和d:data都存在,脚本会出错,复制也就会停止,如果要强制覆盖,使用lder “c:data” “d:data”,true

移动:set fs=object(“stemobject”)

lder “c:data” “d:data”

我们可以使用统配符,来方便操作:

例如, lder :c:datate*” , “d:working”

注意:在目的路径最后没有使用“” 也就是说我没有这样写:

lder c:datate*” , “d:working”

这样写的话,如果d:working 目录不存在,windows就不会为我们自动创建这个目录。

注意:上面我们所举的例子都是在利用fso提供的方法,如果使用folder对象也完全是可以的:

set fs= object(“stemobject”)

set f=der(“c:data”)

//删除文件夹c:data。如果有子目录,也会被删除

“d:working”,true//拷贝到d:working

“d:temp”//移动到d:temp

3、特殊文件夹

一般指的就是系统文件夹:windowssystem32, 临时文件夹,windows文件夹,在前几篇的时候,我们提过一下:例如

set fs=object(“stemobject”)

set wshshell=object(“”)

osdir=environmentstrings(“%systemroot%”)

set f =der(osdir)

f

当然,还有简单的方法 那就是使用getspecialfolder()

这个方法使用3种值:

windowsfolder 文件夹,相关常量是windows表示0.

1系统文件夹,相关常量是systemfolder

2临时目录,相关常量temporaryfolder

例如:

set fs=object(“stemobject”)

set wfolder=cialfolder(0) ‘返回windows目录

set wfolder=cialfolder(1) ‘返回system32

set wfolder=cialfolder(2)'返回临时目录

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

每次开机的时候,你想自动登陆你的QQ或者网志吗?巧妙使用VBS中的SendKeys命令(这个命令的作用就是模拟键盘操作,将一个或多个按键指令发送到指定Windows窗口来控制应用程序运行),可以极大的方便我们的常用操作。其使用格式为:

ys string其中:

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

Set WshShell=Object()

将Object替换为WshShell

“string”:表示要发送的按键指令字符串,需要放在英文双引号中。它包含如下内容:

1.基本键:一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如要发送字母“x”,使用“ys 硜╜??即可。当然,也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可,例如,要发送按键“cfan”,可以使用

“ys cfan”。

2.特殊功能键:对于需要与Shift、Ctrl、Alt三个控制键组合的按键,SendKeys使用特殊字符来表示:Shift —— +;Ctrl —— ^;Alt —— %

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

由于“+”、“^”这些字符用来表示特殊的控制按键了,如何表示这些按键呢?只要用大括号括住这些字符即可。例如,要发送加号“+”,可使用“ys {+}”。另外对于一些不会生成字符的控制功能按键,也同样需要使用大括号括起来按键的名称,例如要发送回车键,需要用“ys

{ENTER}”表示,发送向下的方向键用

“ys {DOWN}”表示。

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

{x 10}”即可。

例一:ys ^{ESC}u

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

例二:让VBS脚本自动在记事本中输入一行文字“hello, welcome to cfan”。

Dim WshShell

Set WshShell=Object()

otepad

2000

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

獗卨敨汬?灰捁楴慶整尠无标题 - 记事本

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

ys hello, welcome to cfan

作业1:让脚本自动输入下面两段小短句

This is the most wonderful day of my life

because I'm here with you now

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

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

我们最常用的记事本没有Word、WPS那样的自动定时存盘功能,其实利用VBS脚本再加上SendKeys命令,就能弥补这个遗憾。打开记事本,输入以下内容(为容易描述和分析,把代码分为四个部分):

'第一部分:定义变量和对象

Dim WshShell, AutoSaveTime, TXTFileName

AutoSaveTime=300000

Set WshShell=Object()

塔?汩乥浡?湉異?硯尨请输入你要创建的文件名(不能用中文和纯数字):)

'第二部分:打开并激活记事本

otepad

200

獗卨敨汬?灰捁楴慶整尠无标题 - 记事本

'第三部分:用输入的文件名存盘

ys ^s

300

ys TXTFileName

300

ys %s

AutoSaveTime

'第四部分:自动定时存盘

While ivate (TXTFileName)=True

ys ^s

AutoSaveTime

Wend

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

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

第一部分:定义了脚本中需要用到的变量和对象。“AutoSaveTime”变量用来设置自动存盘间隔,单位为毫秒,这里设置为5分钟。“TXTFileName”变量通过输入框取得你要创建的文本文件名称。[作者:临汾市外事旅游局薛靖澜,转载请注明出处]

第二部分:运行记事本,对于Windows本身提供的程序,比如计算器等,可直接在“”后输入程序名称,如捜污屣,对于非系统程序,则可输入完全路径,但要注意使用8.3格式输入,比如“D:Progra~”。

第三部分:这里用SendKeys命令执行了这样的操作流程(请注意每个操作之间延时命令的使用):在记事本中按Ctrl+S组合键→弹出保存文件的窗口→输入文件名→按Alt+S组合键进行保存(默认保存在“我的文档”目录)。

第四部分:定时存盘的关键,通过“While……Wend”这个当条件为“真”时循环命令,实现自动存盘代码“ys ^s”和定时代码“ AutoSaveTime”的重复执行。因为不能让这个定时存盘循环一直执行,退出记事本后,必须自动退出脚本并结束循环,所以设计了一个循环判断条件“ivate TXTFileName=True”,当记事本运行中时,可以激活记事本窗口,这个条件运行结果为“True”,定时存盘循环一直执行,退出记事本后,脚本无法激活记事本窗口,就会跳出循环,执行“Wend”后面的“”退出脚本。

例四:快速登陆QQ软件。假设QQ号码是:10001,密码是:123456,隐身登陆:

set ws=object()

C:Progra~,0

2000

ivate QQ用户登录

ys 815247

200

ys {TAB}

ys *********

200

ys {ENTER}