VBS脚本必备教程

上传人:gbs****77 文档编号:12950325 上传时间:2020-06-04 格式:DOC 页数:50 大小:221KB
返回 下载 相关 举报
VBS脚本必备教程_第1页
第1页 / 共50页
VBS脚本必备教程_第2页
第2页 / 共50页
VBS脚本必备教程_第3页
第3页 / 共50页
点击查看更多>>
资源描述
VBS 脚本教程 就像多数计算机教程一样 我们从 Hello World 程序开始我们的练习 什么 不知道是什么意思 就是说大部分的计算机程序设计教程开篇入门都是 编写一个小程序 执行这个程序的结果就是在计算机的屏幕上或者 dos 窗口中 显示一行文字 Hello World 好了 我们开始吧 打开你的 记事本 程序 在编辑窗口填写 msgbox Hello World 然后用鼠标单击 文件 菜单 单击 保存 把 保存在 一栏设为桌面 在 文件名 一栏中填写 kk vbs 单击 保存 就可以了 然后最小化 记事本 窗口 在桌面上寻找你刚刚保存的 kk vbs 然后双击 看到弹出的对话框了没 有 单击 确定 对话框消失了 难看了点 不过确实是你编写的第一个脚本 程序 说明之一 上面的操作中 保存位置放在桌面 仅仅是为了执行方便 你保存 到其他的地方完全没有问题 只要你知道你保存在什么地方就可以了 什么 是废话 自己保存的当然知道保存在那里了 不 自己保存的文件自己找不到 的人我见的多了去了 文件名你可以随意填写 不一定非要写 kk 只要符合 Windows 的文件命名规则就可以了 但是扩展名必须是 vbs 什么 不知道什么 是扩展名 就是文件名中 后的那部分 简单说 就是 vbs 脚本文件命名时 必须是 xxx 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 函数将变量转换为浮点数值 前者只精确到小数 点后四位 后两者要更加精确 数值的范围也要大的多 CCur 函数可把表达式转换为货币 Currency 类型 CSng 函数可把表达式转换为单精度 Single 类型 Cdate 函数将变量转换为日期值 Cint 函数和 Clng 函数将变量转换为整数 后者的范围比前者要大的多 Cstr 函数将变量转换为字符串 二 数组 数组的定义与变量非常类似 只需要在变量后描述这个数组的个数和维数 需 要注意的是 数组的下标总是从 0 开始 而以数组定义中数值减一结束 也就 是说你以要定义一个有十个数据的数组 将这样书写代码 dim array 9 同 样 当你要访问第五个元素时 实际的代码是 array 4 当然 你可以通过不 指定数组的个数和维数来申明动态数组 等到数组的个数和维数固定后 使用 关键字 redim 来改变数组 注意 在改变数组的大小时 数组的数据会被破坏 使用关键字 preserve 来保护数据 例如 Redim 空格 preserve 空格 array 括号个数逗号维数括号 Redim preserve arry 3 1 三 操作符 在 VBScript 运算符中 加减乘除都是我们常用的符号 乘方使用的是 取 模使用的 Mod 在比较操作符中 等于 小于 大于 小于等于 大于等于都与我们常用的符 号是一致的 而不等于是小于和大于连用 逻辑运算符为 和操作 AND 非操作 NOT 或操作 OR 你可以使用操作符 和操作符 来连接字符串 一般使用 操作符 另外还有一个比较特殊的操作符 Is 用来比较对象 例如按钮对象 如果对象是 同一类型 结果就是真 如果对象不是同一类型 结果就是假 四 条件语句主要有 if then 语句和 select case 语句两种形式 在 if then 语句中 其基本形式为 If 条件 then 处理条件的语句 Endif 基本形式只能对单个条件进行验证 如果有两个条件 则需要在基本形式中添 加单行语句 else 如果还有更多的条件需要验证 则需要添加语句 Elseif 条件 then 处理条件语句 在 select case 语句中 其基本形式为 Select case 变量 Case 条件值 处理条件语句 并对上两句进行重复 最后一句应为 case else 处理语句 当然不要忘记将条件结束语句 End select 放在最后一行 注意 在执行字符串比较时 需要特别注意大小写 一般情况下 我们在比较 前 使用 lcase 函数将字符串转换成小写 使用 ucase 函数将字符串转换成大 写 五 循环控制语句 循环控制语句有 for next 循环 for each 循环 do while 循环 do until 循环 while 循环五种形式 在使用循环控制语句前 首先要对循环条件进行判断 如果循环次数是有固定 次数的 那么使用 For next 循环 其结构为 For 计数器变量 开始计数值 to 最后计数值 执行循环体 Next 如果是需要对数组或对象集合中的每一个元素进行判断 则需要使用 for each 循环 其结构为 For each 循环计数变量 in 要查看的对象或数组 执行处理语句 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 也提供了一些内部函数和对象 但是 Vbs 没有提供任何命令来访 问 Windows 系统内部的部件 但是值得庆幸的是 Vbs 虽然不能自己完成这些 任务 但是它提供了一条极为方便 功能也相当强的命令 CreateObject 这条命令可以访问 windows 系统内安装的所有 com 对象 并且可以调用这些部 件中存放的命令 于是问题解决了 比如说 我手头有 1000 个小文本 我首先要对每一个文本的 语法进行查错和修改 然后按照预先定义好的规则对这些文本进行排序 最后 将这些文本合并成为一个文件 正常情况下 我们需要把打开第一个小文本 然后把它复制到 WORD 中 然后利用里面的除错功能进行除错和修改 然后再导 入到 EXCEL 中进行排序 将这个过程重复 1000 遍 然后再将所有得到的文本复 制到一个大文本中 实在是太枯燥 工作量太大了 有了 Vbs 和 CreateObject 问题得到解决 我只需要找到相应的模块 调用相应的功能就 可以了 作为脚本 把一个枯燥的过程重复 1000 次 本就是它的拿手好戏 好了 我们走入正题 从最简单的 只启动一个程序开始 WSH 也就是用来解析 Vbs 的宿主 本身包含了几个个常用对象 1 Scripting FileSystemObject 提供一整套文件系统操作函数 2 Scripting Dictionary 用来返回存放键值对的字典对象 3 Wscript Shell 提供一套读取系统信息的函数 如读写注册表 查找 指定文件的路径 读取 DOS 环境变量 读取链接中的设置 4 Wscript NetWork 提供网络连接和远程打印机管理的函数 其中 所有 Scripting 对象都存放在 SCRRUN DLL 文件中 所有的 Wscript 对象都存放 在 WSHOM ocx 文件中 现在我们需要的是第三个对象 好了 让我们先连接一下对象看看 在记事本 的编辑窗口中输入 Set objShell CreateObject Wscript Shell objShell Run notepad 同样 保存执行 那么看到了一个什么样的结果呢 在桌面上又打开了一个记 事本 说明之一 Set 是 Vbs 指令 凡是将一对象引用赋给变量 就需要使用 set 关 键字 那么什么是对象引用呢 凡是字符串 数值 布尔值之外的变量都是对 象引用 Objshell 是变量名 可以随意修改 说明之二 反是正确引用的对象 其本身内置有函数和变量 其引用方法为在 变量后加 后紧跟其实现功能的函数就可以了 Objshell run 的意思就 是调用 Wscript shell 中的运行外部程序的函数 run notepad 是记事本程 序的文件名 当然你也可以改成 calc 这是计算器的文件名 winword 是 word 的文件名 等等吧 所有可执行文件的文件名都可以 但是需要注意的是 如果你要执行的可执行文件存放的地方不是程序安装的常用路径 一般情况下 需要提供合法的路径名 但是 run 在运行解析时 遇到空格会停止 解决的方 法是使用双引号 例如 在我的机器上运行 qq 代码为 objshell run C Program Files QQ2006 QQ exe 注 三个引号 好 我们再进一步 启动两个程序会如何呢 输入如下代码 Set objShell CreateObject Wscript Shell objShell Run notepad objShell Run calc 执行会如何呢 两个程序基本上同时启动了 如果我们需要先启动 notepad 再 启动 calc 将如何呢 很简单在需要顺序执行的代码后加 True 参数就可以 了 好了输入代码 Set objShell CreateObject Wscript Shell objShell Run notepad true objShell Run 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 err number0 then wscript echo err number err description err source end if Vbs 脚本编程简明教程之六 修改注册表 Vbs 中修改注册表的语句主要有 1 读注册表的关键词和值 可以通过把关键词的完整路径传递给 wshshell 对象的 regread 方法 例如 set ws wscript createobject wscript shell v ws regread HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVe rsion Run nwiz wscript echo v 2 写注册表 使用 wshshell 对象的 regwrite 方法 例子 path HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion Ru n set ws wscript createobject wscript shell t ws regwrite path jj hello 这样就把 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion Run jj 这个键值改成了 hello 不过要注意 这个键值一定要预先存在 如果要创建一个新的关键词 同样也是用这个方法 path HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion ru n sssa2000 love set ws wscript createobject wscript shell val ws regwrite path nenboy val ws regread path wscript echo val 删除关键字和值 使用 regdelete 方法 把完整的路径传递给 regdelete 就可以了 例如 val ws regdel 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 返回一个文件夹或文件的绝对路径 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 wscript createobject scripting filesystemobject 这样就建立了 fso 的模型 如果要释放的话也很简单 set fs nothing 2 使用文件夹 在创建前 我们一般需要检查该文件夹是否存在例如 dim fs s 定义 fs s 两个变量 set fs wscript createobject scripting filesystemobject fs 为 FSO 实例 if fs folderexists c temp then 判断 c temp 文件夹是否存在 s is available else s not exist set foldr fs createfolder c temp 不存在则建立 end if 删除 set fs wscript createobject scripting filesystemobject fs deletefolder c windows 拷贝 set fs wscript createobject scripting filesystemobject fs copyfolder c data d data 注意 如果 c data 和 d data 都存在 脚本会出错 复制也就会停止 如果 要强制覆盖 使用 fs copyfolder c data d data true 移动 set fs wscript createobject scripting filesystemobject fs movefolder c data d data 我们可以使用统配符 来方便操作 例如 fs movefolder c data te d working 注意 在目的路径最后没有使用 也就是说我没有这样写 fs movefolder c data te d working 这样写的话 如果 d working 目录不存在 windows 就不会为我们自动创建这 个目录 注意 上面我们所举的例子都是在利用 fso 提供的方法 如果使用 folder 对象 也完全是可以的 set fs wscript createobject scripting filesystemobject set f fs getfolder c data f delete 删除文件夹 c data 如果有子目录 也会被删除 f copy d working true 拷贝到 d working f move d temp 移动到 d temp 3 特殊文件夹 一般指的就是系统文件夹 windows system32 临时文件夹 windows 文件 夹 在前几篇的时候 我们提过一下 例如 set fs wscript createobject scripting filesystemobject set wshshell wscript createobject wscript shell osdir wshshell expandenvironmentstrings systemroot set f fs getfolder osdir wscript echo f 当然 还有简单的方法 那就是使用 getspecialfolder 这个方法使用 3 种值 0 表示 windows 文件夹 相关常量是 windowsfolder 1 系统文件夹 相关常量是 systemfolder 2 临时目录 相关常量 temporaryfolder 例如 set fs wscript createobject scripting filesystemobject set wfolder fs getspecialfolder 0 返回 windows 目录 set wfolder fs getspecialfolder 1 返回 system32 set wfolder fs getspecialfolder 2 返回临时目录 Vbs 脚本编程简明教程之九 妙用 SendKeys 简化重复操作 每次开机的时候 你想自动登陆你的 QQ 或者网志吗 巧妙使用 VBS 中的 SendKeys 命令 这个命令的作用就是模拟键盘操作 将一个或多个按键指令发 送到指定 Windows 窗口来控制应用程序运行 可以极大的方便我们的常用操作 其使用格式为 Object SendKeys string 其中 Object 为 WshShell 对象 即脚本的第一行为 Set WshShell 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 x 10 即可 例一 WshShell SendKeys ESC u 代码的含义为 按下 Ctrl Esc 组合键 相当于按 Win 键 打开 开始 菜单 接着按 U 键打开 关机 菜单 例二 让 VBS 脚本自动在记事本中输入一行文字 hello welcome to cfan Dim WshShell Set WshShell WScript CreateObject WScript Shell WshShell Run notepad WScript Sleep 2000 本行的含义为是脚本暂停 2 秒 给 notepad 一个打开的时间 有时时间太短 可能导致后面的字符无法进入编辑区 WshShell AppActivate 无标题 记事本 AppActivate 为寻找可执行程序的标题框 无标题 记事本 内容你的自 己打开看一下 WshShell SendKeys 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 WScript CreateObject WScript Shell TXTFileName InputBox 请输入你要创建的文件名 不能用中文和纯数字 第二部分 打开并激活记事本 WshShell Run notepad WScript Sleep 200 WshShell AppActivate 无标题 记事本 第三部分 用输入的文件名存盘 WshShell SendKeys s WScript Sleep 300 WshShell SendKeys TXTFileName WScript Sleep 300 WshShell SendKeys s WScript Sleep AutoSaveTime 第四部分 自动定时存盘 While WshShell AppActivate TXTFileName True WshShell SendKeys s WScript Sleep AutoSaveTime 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 Sleep AutoSaveTime 的重复执行 因为不能让这个定时存盘循环 一直执行 退出记事本后 必须自动退出脚本并结束循环 所以设计了一个循 环判断条件 WshShell AppActivate TXTFileName True 当记事本运行中时 可以激活记事本窗口 这个条件运行结果为 True 定时存盘循环一直执行 退出记事本后 脚本无法激活记事本窗口 就会跳出循环 执行 Wend 后面 的 WScript Quit 退出脚本 例四 快速登陆 QQ 软件 假设 QQ 号码是 10001 密码是 123456 隐身登陆 set ws wscript createobject wscript shell ws run C Progra 1 Tencent QQ QQ exe 0 wscript Sleep 2000 ws AppActivate QQ 用户登录 ws SendKeys 7015247 wscript Sleep 200 ws SendKeys TAB ws SendKeys wscript Sleep 200 ws SendKeys ENTER 例五 关机菜单立刻显身 打开记事本 输入以下命令 并将其保存为 1 vbs set WshShell CreateObject WScript Shell WshShell SendKeys ESC u 双击运行它 你会发现关机菜单立刻出现了 将 WshShell SendKeys ESC u 改为 WshShell SendKeys ESC 运行一下看看是否打开了任务管理器 妙用 SendKeys 自动上网并登陆网志 将下面的脚本复制到一个文本文件中 并将其文件名命名为 自动登陆 vbs 然后将拨号软件及本脚本一起复制到程序 启动项中 就可以实现自动拨号 上网 并登陆到网志上 代码如下 Set wshshell CreateObject wscript shell wshshell AppActivate 连接 MAE 301U 拨号连接 wscript Sleep 20000 wshshell SendKeys enter wshshell Run iexplore WScript Sleep 2000 wshshell AppActivate hao123 网址之家 实用网址 搜索大全 尽在 Microsoft Internet Explorer 引号中的内容修改为你的 浏览器打开后标题栏中的内容 wshshell SendKeys d wshshell SendKeys wshshell SendKeys enter WScript Sleep 2000 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 代表链接或快捷方式 例如 set fs wscript createobject scripting filesystemobject set f fs getfile d index txt msgbox f Attributes attributes 函数的作用是显示文件属性 需要说明的是 msgbox 显示的结果往往不是上面说明的数字 而是有关属性代 表数字的和 二 创建文件 object createtextfile 方法 注意创建前一般需要检查文件 是否存在 例如 set fso wscript createobject scripting filesystemobject if fso fileexists c kk txt then msgbox 文件已存在 else set f fso createtextfile c kk txt end if 如需要强制覆盖已存在的文件 则在文件名后加 true 参数 三 复制 移动 删除文件 使用 copyfile 方法 movefile 方法 deletefile 方法 例如 set fso 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 方法 如 set ts fso opentextfile c kk txt 1 true 说明 第二个参数为访问模式 1 为只读 2 写入 8 为追加 第三个参数指定如文件不存在则创建 2 读取文件 read x 读 x 个字符 readline 读一行 readall 全部读取 如 set ffile fso opentextfile c kk txt 1 true value ffile read 20 line ffile readline contents ffile readall 3 常见的指针变量 atendofstream 属性 当处于文件结尾的时候这个属性返回 true 一般用循环 检测是否到达文件末尾 例如 do while ffile atendofstreamtrue 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 扩展名属性 vbs File vbs All Files FilterIndex 指定 InitialDir 指定默认的文件夹 FileName 指定的文件名 Flags 对话框的类型 Showopen 方法 很简单 ok 让我们来举两个简单的例子 例一 保存文件 Set objDialog CreateObject SAFRCFileDlg FileSave Set objFSO CreateObject Scripting FileSystemObject objDialog FileName test objDialog FileType txt intReturn objDialog OpenFileSaveDlg If intReturn Then objFSO CreateTextFile objDialog FileName objdialog filetype Else Wscript Quit End If 注意 1 SAFRCFileDlg FileSave 对象仅仅是提供了一个方便用户选择的界面 本身并没有保存文件的功能 保存文件还需要使用 FSO 对象来完成 2 用 FileType 属性来指定默认的文件类型 3 在调用 OpenFileSaveDlg 方法时 最好把返回值保存到一变量中 用它可以判断用户按下的是确定还是取消 例二 打开文件 set objFile CreateObject SAFRCFileDlg FileOpen intRet objFile OpenFileOpenDlg if intret then msgbox 文件打开成功 文件名为 objFile filename else wscript quit end if 例三 比较复杂的打开文件对话框 Set objDialog CreateObject UserAccounts CommonDialog objDialog Filter vbs File vbs objDialog InitialDir c tfile objDialog ShowOpen if tfile then strLoadFile objDialog FileName msgbox strLoadFile else wscript quit end if 说明 在脚本中加入 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 仅仅是 ANSI SQL 的一个子集 只能用于数据的提 取 数据 事件查询的基本语法为 Select pro1 pro2 pro3from 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 托管资源的属性 最后一个步骤是枚举 检索得到集合的内容 一般采用 For each enum inmyclass 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 扩展类 表示 Windows 特定的托管资源 如果 这是您第一次检查 root cimv2 命名空间 您可能希望熟悉 root cimv2 命名 空间中的类的完整集合 尤其是有 Win32 前缀的类 5 向下滚动 查询结果 对话框直至到达 Win32 Process 类 双击该类名打开 Win32 Process 对话框的对象编辑器 6 对象编辑器 对话框显示被选定类的定义和实现的详细信息 属性和方法 选择 Hide System Properties 复选框隐藏系统属性 剩余的 Win32 Process 属性表示您可以从在本地或远程计算机上运行的进程检索的信息 运行如下代码 strComputer Set wbemServices Getobject winmgmts strComputer Set wbemObjectSet wbemServices InstancesOf Win32 Process For Each wbemObject In wbemObjectSet WScript Echo Name wbemObject Name vbCrLf Handle wbemObject Handle vbCrLf Process ID wbemObject ProcessID Next 7 在运行脚本之后 您可以用 WIMI 测试器验证脚本的结果 在 Win32 Process 对话框的对象编辑器中 单击 Instances 产生的查询结果对 话框列出在计算机上运行的进程的实例 双击一个指定的进程实例 查看该实 例的详细信息 阻止客人运行你不想运行的程序 很多人都有这样的经验 刚刚装好的系统 让人运行了一些你不想他运行的程 序 比如说 QQ 又是聊天 又是下载表情 不过一会 流氓插件 病毒 木马 已经盘踞了你的计算机 常常是忍痛将这个程序卸载 可是不知情的人很自觉 的下载安装 使整个系统无法正常运行 其实用 vbs 和 wmi 结合起来 使你的计算机上有相应的程序安装 别人又无法 运行起来太容易了 现在给出代码 On Error Resume Next 忽略所有的错误 Dim bag pipe honker good Do good 定义为本地计算机 set bag getobject winmgmts good root cimv2 l 连接到 cimv2 命名空间 set pipe bag execquery select from win32 process where nam
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!