VBS脚本编程简明教程.pdf
第一章 VBS 脚本编程简明教程 第一节 Vbs 脚本编程简明教程之一为什么要使用 Vbs 在 Windows 中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开 WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来。这些事情重复、琐碎,使人容易疲劳。第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机()吗 Vbs 是一种 Windows 脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化 BASIC 脚本版),VBS 是 Visual Basic 的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由 Windows 系统执行(实际是一个叫做宿主 host 的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。我个人认为 Vbs 脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对 COM 对象的简便支持。那么什么是 COM 对象呢 我这样理解,COM 对象就是一些具有特定函数功能项程序模块,他们一般以ocx 或者 dll 作为扩展名,你只要找到包含有你需要的功能的模块文件,并在脚本中规范的引用,就可以实现特定的功能,也就是说 Vbs 脚本就是调用现成的“控件”作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等等麻烦。说白了,我不是觉得拔猪毛麻烦么我发觉 xx 机(比如真空离心器)有一个功能可以实现脱毛,ok,我把它拿来给猪脱毛。什么大材小用太浪费资源了天哪,那是计算机芯片的事情,死道友不死贫道,反正我的事情是方便快速的解决了,这就行了。最方便的是它甚至不需要专门的开发环境,在你的计算机中,只要有 notepad,就可以编写 Vbs 脚本了,并且可以直接执行。第二节 Vbs 脚本编程简明教程之二如何开始第一个 Vbs 脚本 就像多数计算机教程一样,我们从“Hello World!”程序开始我们的练习。什么不知道是什么意思就是说大部分的计算机程序设计教程开篇入门都是编写一个小程序,执行这个程序的结果就是在计算机的屏幕上或者 dos 窗口中显示一行文字:Hello World!好了,我们开始吧。打开你的“记事本”程序,在编辑窗口填写:msgbox Hello World!然后用鼠标单击“文件”菜单,单击“保存”,把“保存在”一栏设为桌面,在“文件名”一栏中填写,单击“保存”就可以了。然后最小化“记事本”窗口,在桌面上寻找你刚刚保存的,然后双击。看到弹出的对话框了没有,单击“确定”,对话框消失了。难看了点,不过确实是你编写的第一个脚本程序。说 明之一:上面的操作中,保存位置放在桌面,仅仅是为了执行方便,你保存到其他的地方完全没有问题,只要你知道你保存在什么地方就可以了,什么是废话,自 己保存的当然知道保存在那里了。不,自己保存的文件自己找不到的人我见的多了去了。文件名你可以随意填写,不一定非要写 kk,只要符合 Windows的文件命名规则就可以了,但是扩展名必须是 vbs,什么不知道什么是扩展名就是文件名中“.”后的那部分,简单说,就是 vbs 脚本文件命名时必须是:,其中 xxx 你随意。说明之二:在记事本编辑窗口中写的这行是什么意思 Msgbox 是 VBS 内 建的函数,每一个函数都可以完成一定的功能,你只需要按照语法要求,在函数的相应部分填写相应的内容就可以了,这部分内容我们称为参数,当然函数执行的结 果我们称为返回值,一个函数可以有返回值也可以没有,可以有参数也可以没有。你不用了解函数是怎么运作的,只要了解这个函数能干什么就行了。Msgbox 语法:msgbox 对话框内容,对话框的标题 你不妨用记事本打开刚才的文件在编辑窗口中输入:msgbox Hello World!,系统提示 执行一下,看看效果和位置。说明之三:如果执行失败,看看你的标点符号,所有的标点符号必须是在英文状态下输入的。当然,这个脚本实在是太简单了,甚至连最简单的交互都没有,所以你可以把脚本这样修改一下:Dim name name=Inputbox(请输入你的名字:,名称)Msgbox name,您的名字是 保存执行一下,看到弹出的对话框了么填入你的名字,点确定,看到结果了吗 说明之一:第一句是定义变量,dim 是定义变量的语句 其格式为:dim 变量 1,变量 2,Vbs 只有一种变量类型,所以不用声明变量类型。系统会自动分辨变量类型。说明之二:inputbox 是 VBS 内建的函数,可以接受输入的内容,其语法格式为:Inputbox(对话框内容,对话框标题)第二句的意思是接受用户的输入,并把输入结果传递给变量 name。好了,到此脚本基本的输入输出函数都有了,已经可以完成一些比较简单的功能了,你可以编写一个简单的脚本,然后拷贝的“程序”“启动”中,然后重新启动计算机看看结果。第三节 Vbs 脚本编程简明教程之三Vbs 的基本语法(牢 记)VBScript 基础知识 一、变量 1、所有单引号后面的内容都被解释为注释。2、在 VBScript 中,变量的命名规则遵循标准的命名规则,需要注意的是:在 VBScript 中对变量、方法、函数和对象的引用是不区分大小写的。在申明变量时,要显式地申明一个变量,需要使用关键字 DIm 来告诉 VBScript 你要创建一个变量,并将变量名称跟在其后。申明多个同类型变量,可以用逗号分隔。注意:VBScript 中不允许在申明变量的时候同时给变量赋值。但是允许在一行代码内同时对两个变量进行赋值,中间用冒号分隔。3、你可以使用 OptionExplicit 来告诉宿主变量必须先声明后使用。4、VBScript 在定义时只有一种变量类型,在实际使用中需要使用类型转换函数来将变量转换成相应的变量类型。Cbool 函数将变量转换成布尔值;Cbyte 函数将变量转换为 0 到 255 之间的整数。Ccur 函数、Cdbl 函数和 Csng 函数将变量转换为浮点数值,前者只精确到小数点后四位,后两者要更加精确,数值的范围也要大的多。Cdate 函数将变量转换为日期值。Cint 函数和 Clng 函数将变量转换为整数,后者的范围比前者要大的多。Cstr 函数将变量转换为字符串。二、数组 数组的定义与变量非常类似,只需要在变量后描述这个数组的个数和维数。需要注意的是:数组的下标总是从 0 开始,而以数组定义中数值减一结束。也就是说你以要定义一个有十个数据的数组,将这样书写代码:dImarray(9),同样,当你要访问第五个元素时,实际的代码是 array(4)。当然,你可以通过不指定数组的个数和维数来申明动态数组。等到数组的个数和维数固定后,使用关键字redim 来改变数组。注意,在改变数组的大小时,数组的数据会被破坏,使用关键字 preserve 来保护数据。例如:RedIm 空格 preserve 空格 array 括号个数逗号维数括号 三、操作符 在 VBScript 运算符中,加减乘除都是我们常用的符号,乘方使用的是,取模使用的 Mod。在比较操作符中,等于、小于、大于、小于等于、大于等于都与我们常用的符号是一致的,而不等于是小于和大于连用。逻辑运算符为:和操作AND 非操作NOT 或操作OR;你可以使用操作符+和操作符&来连接字符串,一般使用&操作符;另外还有一个比较特殊的操作符 Is 用来比较对象,例如按钮对象,如果对象是同一类型,结果就是真,如果对象不是同一类型,结果就是假。四、条件语句主要有 ifthen 语句和 selectcase 语句两种形式 在 ifthen 语句中,其基本形式为:If 条件 then 处理条件的语句;Endif 基本形式只能对单个条件进行验证,如果有两个条件,则需要在基本形式中添加单行语句 else,如果还有更多的条件需要验证,则需要添加语句 Elseif 条件 then 处理条件语句 在 selectcase 语句中,其基本形式为:Select case 变量 Case 条件值 处理条件语句 并对上两句进行重复 最后一句应为 case else 处理语句 当然不要忘记将条件结束语句 End select 放在最后一行 注意:在执行字符串比较时,需要特别注意大小写,一般情况下,我们在比较前,使用 lcase 函数将字符串转换成小写,使用 ucase 函数将字符串转换成大写大写。五、循环控制语句 循环控制语句有 fornext 循环、foreach 循环、dowhile 循环、dountil 循环、while 循环五种形式。在使用循环控制语句前,首先要对循环条件进行判断,如果循环次数是有固定次数的,那么使用 Fornext 循环,其结构为:For 计数器变量开始计数值 to 最后计数值 执行循环体 Next 如果是需要对数组或对象集合中的每一个元素进行判断,则需要使用foreach 循环,其结构为:For each 循环计数变量 in 要查看的对象或数组 执行处理语句 Next 注意:在上述两种循环中随时可以使用 exit for 来退出循环 如果你希望在条件满足时执行一段代码则使用 dowhile 语句,结构为:Do while 条件 执行循环体 Loop 如果你希望在条件不满足时执行代码,则使用 dountil 语句,结构为:Do until 条件 执行循环体 Loop 当然,在这两种循环语句中,你可以使用 exit do 来退出循环 最后一种循环语句是条件满足时一直执行循环,While 条件 执行循环体 Wend 六、使用过程 常用的过程有两种,一种为函数,给调用者返回值,一种为子程序,无返回值,还有一种叫事件的特殊子程序,用的比较少。函数的基本定义方法为:Function 函数名称(参数列表)函数代码 函数名称某值 用来返回值 end function 子程序一些都类似,不过没有返回值 注意:尽管在定义子程序的时候,参数列表要加括号,但在调用子程序的时候,参数列表不加括号,括号只在函数中使用。另外,子程序不能在表达式中使用。而函数只能出现在赋值语句的右边,或者表达式中,函数不能直接使用,如果必须直接使用函数,则必须使用 call 语句调用,并取消返回值。第四节 Vbs 脚本编程简明教程之四如何利用 Vbs 运行外部程序 Vbs 只提供了编程的一个基本框架,用户可以使用 Vbs 来定义变量、过程和函数,vbs 也提供了一些内部函数和对象,但是 Vbs 没有提供任何命令来访问Windows 系统内部的部件,但是值得庆幸的是,Vbs 虽然不能自己完成这些任务,但是它提供了一条极为方便、功能也相当强的命令CreateObject,这条命令可以访问 windows 系统内安装的所有 com 对象,并且可以调用这些部件中存放的命令。于是问题解决了,比如说,我手头有 1000 个小文本,我首先要对每一个文本的语法进行查错和修改,然后按照预先定义好的规则对这些文本进行排序,最后将这些文本合并成为一个文件。正常情况下,我们需要把打开第一个小文本,然后把它复制到 WORD 中,然后利用里面的除错功能进行除错和修改,然后再导入到 EXCEL 中进行排序,将这个过程重复 1000 遍,然后再将所有得到的文本复制到一个大文本中。实在是太枯燥、工作量太大了。有了 Vbs 和 CreateObject,问题得到解决,我只需要找到相应的模块,调用相应的功能就可以了,作为脚本,把一个枯燥的过程重复 1000 次,本就是它的拿手好戏。好了,我们走入正题,从最简单的只启动一个程序开始。WSH 也就是用来解析 Vbs 的宿主,本身包含了几个个常用对象:1、提供一整套文件系统操作函数 2、用来返回存放键值对的字典对象 3、提供一套读取系统信息的函数,如读写注册表、查找指定文件的路径、读取 DOS 环境变量,读取链接中的设置 4、提供网络连接和远程打印机管理的函数。(其中,所有 Scripting 对象都存放在文件中,所有的 Wscript 对象都存放在文件中。)现在我们需要的是第三个对象,好了,让我们先连接一下对象看看,在记事本的编辑窗口中输入:Set objShell=CreateObject(“”)“notepad”同样,保存执行。那么看到了一个什么样的结果呢在桌面上又打开了一个记事本。说明之一:Set 是 Vbs 指令,凡是将一对象引用赋给变量,就需要使用 set 关键字。那么什么是对象引用呢凡是字符串、数值、布尔值之外的变量都是对象引用。Objshell 是变量名,可以随意修改。说明之二:反是正确引用的对象,其本身内置有函数和变量,其引用方法为在变量后加“.”,后紧跟其实现功能的函数就可以了。的意思就是调用中的运行外部程序的函数run,notepad 是记事本程序的文件名。当然你也可以改成“calc”,这是计算器的文件名,winword 是 word 的文件名,等等吧,所有可执行文件的文件名都可以。但是需要注意的是,如果你要执行的可执行文件存放的地方不是程序安装的常用路径,一般情况下,需要提供合法的路径名,但是 run 在运行解析时,遇到空格会停止,解决的方法是使用双引号,例如:在我的机器上运行 qq,代码为:C:Program FilesQQ2006 注:三个引号 好,我们再进一步,启动两个程序会如何呢 输入如下代码:Set objShell=CreateObject(“”)“notepad”“calc”执行会如何呢两个程序基本上同时启动了。如果我们需要先启动 notepad 再启动 calc 将如何呢很简单在需要顺序执行的代码后加,True 参数就可以了。好了输入代码:Set objShell=CreateObject(“”)“notepad”,true “calc”看看执行的结果怎么样吧!总结:run 函数有三个参数,第一个参数是你要执行的程序的路径,第二个程序是窗口的形式,0 是在后台运行;1 表示正常运行;2 表示激活程序并且显示为最小化;3 表示激活程序并且显示为最大化;一共有 10 个这样的参数我只列出了4 个最常用的。第三个参数是表示这个脚本是等待还是继续执行,如果设为了 true,脚本就会等待调用的程序退出后再向后执行。其实,run 做为函数,前面还有一个接受返回值的变量,一般来说如果返回为0,表示成功执行,如果不为 0,则这个返回值就是错误代码,可以通过这个代码找出相应的错误。第五节 Vbs 脚本编程简明教程之五错误处理 引发错误的原因有很多,例如用户输入了错误类型的值,或者脚本找不到必需的文件、目录或者驱动器,我们可以使用循环技术来处理错误,但是VBS 本身也提供了一些基本技术来进行错误的检测和处理。1、最常见的错误是运行时错误,也就是说错误在脚本正在运行的时候发生,是脚本试图进行非法操作的结果。例如零被作为除数。在 vbs 中,任何运行时错误都是致命的,此时,脚本将停止运行,并在屏幕上显示一个错误消息。你可以在脚本的开头添加 On Error Resume Next 这行语句可以告诉 vbs 在运行时跳过发生错误的语句,紧接着执行跟在它后面的语句。发生错误时,该语句将会把相关的错误号、错误描述和相关源代码压入错误堆栈。2、虽然 On Error Resume Next 语句可以防止 vbs 脚本在发生错误时停止运行,但是它并不能真正处理错误,要处理错误,你需要在脚本中增加一些语句,用来检查错误条件并在错误发生时处理它。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&end if 第六节 Vbs 脚本编程简明教程之六修改注册表 Vbs 中修改注册表的语句主要有:1、读注册表的关键词和值:可以通过把关键词的完整路径传递给 wshshell 对象的 regread 方法。例如:set ws=()v=(HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunnwiz)v 2、写注册表 使用 wshshell 对象的 regwrite 方法。例子:path=HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun set ws=()t=(path&jj,hello)这样就把 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunjj这个键值改成了 hello.不过要注意:这个键值一定要预先存在。如果要创建一个新的关键词,同样也是用这个方法。path=HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionrunsssa2000love set ws=()val=(path,nenboy)val=(path)val 删除关键字和值 使用 regdelete 方法,把完整的路径传递给 regdelete 就可以了 例如 val=(path)注意,如果要删除关键词的值的话 一定要在路径最后加上“”,如果不加斜线,就会删除整个关键词。当然,从现在的角度看,还是使用WMI 的注册表处理功能也许更好些。windows 的常用自动启动项 Windows 启动时通常会有一大堆程序自动启动。不要以为管好了“开始程序启动”菜单就万事大吉,实际上,在 Windows XP/2K 中,常见的两个文件夹和八个注册键都可以使程序实现自动启动。一、当前用户专有的启动文件夹:这是许多应用软件自动启动的常用位置,Windows 自动启动放入该文件夹的所有快捷方式。用户启动文件夹一般在:Documents and Settings“开始”菜单程序启动,其中“”是当前登录的用户帐户名称。二、对所有用户有效的启动文件夹:这是寻找自动启动程序的第二个重要位置,不管用户用什么身份登录系统,放入该文件夹的快捷方式总是自动启动这是它与用户专有的启动文件夹的区别所在。该文件夹一般在:Documents and SettingsAll Users“开始”菜单程序启动。三、Load注 册 键:也 能 够 自 动 启 动 程 序。位 置:HKEY_CURRENT_USERSoftwareMicrosoftWindowsNTCurrentVersionWindowsload。四、Userinit注册键:位置:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionWinlogonUserinit。这里也能够使系统启动时自动初始化程序。通常该注册键下面有一个,这个键允许指定用逗号分隔的多个程序,例如“,”(不含引号)。五、ExplorerRun 注册键:和 load、Userinit 不同,ExplorerRun 键在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下 都 有,具 体 位 置 是:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicie*plorerRun,和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPolicie*plorerRun。六、RunServicesOnce 注册键:RunServicesOnce 注册键用来启动服务程序,启动时间在用户登录之前,而且先于其他通过注册键启动的程序。RunServicesOnce注册键的位置是:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServicesOnce,和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServicesOnce。七、RunServices 注册键:RunServices 注册键指定的程序紧接 RunServicesOnce指定的程序之后运行,但两者都在用户登录之前。RunServices 的位置是:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServices,和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices。八、RunOnceSetup 注册键:RunOnceSetup 指定了用户登录之后运行的程序,它的位置是:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnceSetup,和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceSetup。九、RunOnce 注册键:安装程序通常用 RunOnce 键自动运行程序,它的位置在 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce和 HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce。HKEY_LOCAL_MACHINE 下面的 RunOnce 键会在用户登录之后立即运行程序,运行时机在其他 Run 键指定的程序之前。HKEY_CURRENT_USER 下面的 RunOnce 键在操作系统处理其他 Run 键以及“启动”文件夹的内容之后运行。如果是 XP,你还需要检查一下HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx。十、Run 注册键:Run 是自动运行程序最常用的注册键,位置在:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun,和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun。HKEY_CURRENT_USER 下面的 Run 键紧接 HKEY_LOCAL_MACHINE 下 第七节 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:返回一个文件夹或文件的绝对路径 GetBaseName:返回一个文件或文件夹的基本路径 GetDrive:返回一个 dreve 对象 GetDriveName:返回一个驱动器的名字 GetExtensionName:返回扩展名 GetFile:返回一个 file 对象 GetFileName:返回文件夹中文件名称 GetFolder:返回一个文件夹对象 GetParentFolderName:返回一个文件夹的父文件夹 GetSpecialFolder:返回指向一个特殊文件夹的对象指针 GetTempName:返回一个可以被 createtextfile 使用的随机产生的文件或文件夹的名称 MoveFile:移动文件 MoveFolder:移动文件夹 OpenTextFile:打开一个存在的文件并返回一个 TextStream 对象 第八节 Vbs 脚本编程简明教程之八FSO 中文件夹的基本操作 1、使用 fso 由于 fso 不是 wsh 的一部分,所以我们需要建立他的模型 例如 set fs=(“”)这样就建立了 fso 的模型。如果要释放的话也很简单,set fs=nothing 2、使用文件夹 在创建前,作者:临汾市外事旅游局薛靖澜,转载请注明出处我们一般需要检查该文件夹是否存在例如:dim fs,s bs,以后要使用记事本时,都通过双击这个脚本文件来打开。程序说明:这个脚本的基本思路是定时向记事本发送CtrlS这个存盘组合键。第一部分:定义了脚本中需要用到的变量和对象。“AutoSaveTime”变量用来设置自动存盘间隔,单位为毫秒,这里设置为 5 分钟。“TXTFileName”变量通过输入框取得你要创建的文本文件名称。第二部分:运行记事本,对于 Windows 本身提供的程序,比如计算器等,可直接在“”后输入程序名称,如calc,对于非系统程序,则可输入完全路径,但要注意使用格式输入,比如“D:Progra1Tencent”。第三部分:这里用 SendKeys 命令执行了这样的操作流程(请注意每个操作之间延时命令的使用):在记事本中按 CtrlS 组合键弹出保存文件的窗口输入文件名按 AltS 组合键进行保存(默认保存在“我的文档”目录)。第四部分:定时存盘的关键,通过“WhileWend”这个当条件为“真”时循环命令,实现自动存盘代码“s”和定时代码“AutoSaveTime”的重复执行。因为不能让这个定时存盘循环一直执行,退出记事本后,必须自动退出脚本并结束循环,所以设计了一个循环判断条件“TXTFileName=True”,当记事本运行中时,可以激活记事本窗口,这个条件运行结果为“True”,定时存盘循环一直执行,退出记事本后,脚本无法激活记事本窗口,就会跳出循环,执行“Wend”后面的“”退出脚本。例四:关机菜单立刻显身 打开记事本,输入以下命令,并将其保存为:set WshShell=CreateObject()ESCu 双击运行它,你会发现关机菜单立刻出现了。将“ESCu”改为“+ESC”,运行一下看看是否打开了任务管理器。让我们举个例子利用 SendKeys 自动上网并登陆博客 将下面的脚本复制到一个文本文件中,并将其文件名命名为:自动登陆.vbs,然后将拨号软件及本脚本一起复制到程序启动项中,就可以实现自动拨号上网,并登陆到博客上。代码如下:Set wshshell=CreateObject()连接 MAE-301U 拨号连接 20000 enter iexplore 2000 hao123 网址之家-实用网址,搜索大全,尽在-Microsoft Internet Explorer 引号中的内容修改为你的浏览器打开后标题栏中的内容%d enter 2000 此处修改为博客帐号 tab 此处修改为博客密码 enter%d VBS 中 Sendkey 键盘对应的码表 Key Code-Shift+Ctrl Alt%BACKSPACE BACKSPACE,BS,or BKSP BREAK BREAK CAPS LOCK CAPSLOCK DEL or DELETE DELETE or DEL DOWN ARROW DOWN END END ENTER ENTERor ESC ESC HELP HELP HOME HOME INS or INSERT INSERT or INS LEFT ARROW LEFT NUM LOCK NUMLOCK PAGE DOWN PGDN PAGE UP PGUP PRINT SCREEN PRTSC RIGHT ARROW RIGHT SCROLL LOCK SCROLLLOCK TAB TAB UP ARROW UP F1 F1 F2 F2 F3 F3 F4 F4 F5 F5 F6 F6 F7 F7 F8 F8 F9 F9 F10 F10 F11 F11 F12 F12 F13 F13 F14 F14 F15 F15 F16 F16 第十节 Vbs 脚本编程简明教程之十 Vbs 脚本编程常用的编辑器 Vbs 脚本常用的编辑器当然是 notapad,不过这个编辑器的功能当然实在是太弱了一点,其实有很多的专用的脚本编辑器可以大大方便 vbs 脚本的编写。我常用的有两种:1、VBSEDit 汉化版 2、primalscript 汉化版,可以对 30 多种脚本进行编辑 第十一节 Vbs 脚本编程简明教程之十一 FSO 中文件的基本操作 一、文件属性:在 windows 中,文件的属性一般用数字来表示:0 代表 normal,即普通文件未设置任何属性。1 代表只读文件。2 代表隐藏文件。4 代表系统文件。16 代表文件夹或目录。32 代表存档文件。1024 代表链接或快捷方式。例如:set fs=(“”)set f=(“d:”)msgbox attributes 函数的作用是显示文件属性 需要说明的是:msgbox 显示的结果往往不是上面说明的数字,而是有关属性代表数字的和。二、创建文件:方法,注意创建前一般需要检查文件是否存在。例如:set fso=(“”)if(“c:”)then msgbox“文件已存在”else set f=(“c:”)end if 如需要强制覆盖已存在的文件,则在文件名后加 true 参数。三、复制、移动、删除文件:使用 copyfile 方法、movefile 方法、deletefile方法。例如:set fso=(“”)“c:”,”d:1”,true bs|All Files|*.*);FilterIndex 指定 InitialDir 指定默认的文件夹 FileName 指定的文件名 Flags 对话框的类型 Showopen 方法:很简单,ok,让我们来举两个简单的例子:例一:保存文件 Set objDialog=CreateObject()Set objFSO=CreateObject()=test =.txt intReturn=If intReturn Then&Else End If 注意:1、对象仅仅是提供了一个方便用户选择的界面,本身并没有保存文件的功能,保存文件还需要使用 FSO 对象来完成。2、用 FileType 属性来指定默认的文件类型。3、在调用 OpenFileSaveDlg 方法时,最好把返回值保存到一变量中,用它可以判断用户按下的是确定还是取消。例二:.打开文件 set objFile=CreateObject()intRet=if intret then msgbox“文件打开成功!文件名为:”&else end if 例三:比较复杂的打开文件对话框 Set objDialog=CreateObject()=vbs File|*.vbs =c:tfile=if tfile then strLoadFile=msgbox strLoadFile else end if 说明:在脚本中加入 =&H020 看看会出现什么结果。Vbs 脚本编程简明教程之十三 WMI 基础之一 WMI 即 Windows 管理规范,是用户管理本地和远程计算机的一种模型。通过它可以访问、配置、管理和监视几乎所有的 Windows 资源。WMI 的语法十分简单,基本上常见的命名空间、对象等用几乎一模一样。它对应的是 Windows 里的 WMI 服务(winmgmt)。一、WMI 的起源 几年前,几家资深的计算机公司由于系统管理领域缺少标准,委托 DMTF 启动了 CIM(通用信息模型)项目,理想的 CIM 是一种不受限制于任何特定实现环境的管理工具。WMI 是 CIM 的微软实现,它有很多类是从 CIM 中派生出来的。二、WMI 的命名空间 那么命名空间是做什么作用的呢我简单这样说,在同一段代码中,如果有两个变量或函数的名字完全相同,就会出现冲突。命名空间就是为解决变量、函数的命名冲突而服务的。解决的办法就是将你的变量定义在一个不同名字的命名空间中。就好像财政局有个张三,公安局也有个张三,但我们清楚,就是因为他们分属不同的单位。有些地方可能不太准确,但大致意思就是这样了。WMI 的命名空间创建了一个层次结构,有点类似于我们的目录文件结构。1、root-作为所有其他名字的占位符;2、rootdefault-与注册表操作有关的类;3、rootsecurity-与系统安全有关的类;4、rootcimv2-从 CIM 派生的类,代表我们最常用的工作环境。三、WMI 的对象路径 WMI 的对象路径用来在 CIM 库中定位类和它的事例,对象路径用两个反斜杠开头,第一个元素是目标计算机的名字,第二个元素是相应的WMI 命名空间,第三个元素是相应的类名,并用:将它与命名空间分隔开来。例如:.rootcimv2:win32_service 其中那个.代表是本地系统。四、WMI 的查询语言WQL 仅仅是 ANSI SQL 的一个子集,只能用于数据的提取。数据、事件查询的基本语法为:Select pro1,pro2,pro3 from myclass(myclassevent)例如:Select name,path from Win32_share 说明:列出所有共享的名称和路径 也可以使用通配符*,例如:Select*from Win32_share 关键字 Where 用于限定查询的范围。例如:Select*from Win32_share where name=”Admin”五、WMI 脚本中使用的三个步骤 步骤 1:连接到 WMI 服务 在任何 WMI 脚本中,第一个步骤都是建立一个到目标计算机上的 Windows 管理服务的连接。方法是调用作者:临汾市外事旅游局薛靖澜,转载请注明出处 VBScript 的 Getobject 函 数 并 将 WMI 脚 本 库 的 名 字 对 象 的 名 称(即“winmgmts:”,后跟目标计算机的名称)传递到 Getobject,并返回一个对象的引用,此时,您就可以调用其提供的方法如:InstancesOf,正如方法名所示,InstancesOf 返回由资源的类名标识的托管资源的所有实例。步骤 2:检索 WMI 托管资源的实例 一般采用 WQL 来实现。步骤 3:显示 WMI 托管资源的属性 最后