开启左侧

脚本编程学习——VBS

[复制链接]
etthink 发表于 2018-4-8 13:45:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
六安金安赵国庆老师建议重新设计信息化助手打包,更方便教师使用其中工具,原使用文件夹、链接管理,需要两步,且不直观,很多教师找不到原来程序,且依赖安装解压路径。所以开始VBS脚本学习,用来处理文件管理及链接创建问题。
vbs优势:windows内置,无需运行和编译环境及工具,虽然只是一个命名为.vbs的文本文件,但却能直接调用windows系统中的功能及组件,非常适合做一些重复、自动化操作,我理解类似于以前接触的.bat批处理文件,或.cmd,有什么差异还不清楚。
学习实例及问题
  1. 1、Dim声明变量,没有变量类型,并且不支持在声明时对变量赋值,使用时可以将变量转换为指定类型:
  2. Cbool函数将变量转换成布尔值。<p>Cbyte函数将变量转换为0到255之间的整数。</p>
  3. Ccur函数、Cdbl函数和Csng函数将变量转换为浮点数值,前者只精确到小数点后四位,后两者要更加精确,数值的范围也要大的多。
  4. Cdate函数将变量转换为日期值。
  5. Cint函数和Clng函数将变量转换为整数,后者的范围比前者要大的多。
  6. Cstr函数将变量转换为字符串。
  7. 2、inputbox是VBS内建的函数,可以接受输入的内容,其语法格式为:Inputbox("对话框内容","对话框标题")
  8. 3、Msgbox语法:msgbox  "对话框内容", , "对话框的标题"
  9. 4、CreateObject 通过它来处理外部文件
  10. 5、WSH内置对象
  11. (1)Scripting.FileSystemObject  —>  提供一整套文件系统操作函数
  12. (2)Scripting.Dictionary  —>  用来返回存放键值对的字典对象
  13. (3)Wscript.Shell  —>  提供一套读取系统信息的函数,如读写注册表、查找指定文件的路径、读取DOS环境变量,读取链接中的设置。比如注册表的读、写、删除就是regread、regwrite、regdelete
  14. (4)Wscript.NetWork  —>  提供网络连接和远程打印机管理的函数。(其中,所有Scripting对象都存放在SCRRUN.DLL文件中,所有的Wscript对象都存放在WSHOM.ocx文件中。)
  15. 6、在脚本的开头添加On  Error Resume  Next ,这行语句告诉vbs在运行时跳过发生错误的语句,紧接着执行跟在它后面的语句。
复制代码
案例1:按顺序打开外部文件
  1. Set objShell = CreateObject("Wscript.Shell")
  2. objShell.Run "notepad" ,,true
  3. objShell.Run "calc"
复制代码
脚本的功能是先打开记事本,关闭记事本后自动打开计算器。run函数有三个参数,第一个参数是你要执行的程序的路径,第二个程序是窗口的形式,0是在后台运行;1表示正常运行;2表示激活程序并且显示为最小化;3表示激活程序并且显示为最大化; 第三个参数是表示这个脚本是等待还是继续执行,如果设为了true,脚本就会等待调用的程序退出后再向后执行
案例2:注册表
1、读注册表的关键词和值:
可以通过把关键词的完整路径传递给wshshell对象的regread方法。例如:
set ws=wscript.createobject("wscript.shell")
v=ws.regread("HKLM\Software\7-Zip\Path ")
wscript.echo v
2、写注册表
使用wshshell对象的regwrite方法。例子:
path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"
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\run\sssa2000\love\"
set ws=wscript.createobject("wscript.shell")
val=ws.regwrite(path,"nenboy")
val=ws.regread(path)
wscript.echo val
3、删除关键字和值
使用regdelete方法,把完整的路径传递给regdelete就可以了
例如
val=ws.regdel(path)
注意,如果要删除关键词的值的话 一定要在路径最后加上"\",如果不加斜线,就会删除整个关键词。



学教育技术,上教育技术论坛!http://www.etthink.com

精彩评论3

正序浏览
GoodTsing 发表于 2018-4-10 10:02:51 | 显示全部楼层
孙老师如此勤奋,点个大大的赞。
欢迎大家多发帖,参与讨论,增进彼此了解。
etthink 发表于 2018-8-9 22:08:08 | 显示全部楼层
  1. @echo off
  2. :startx
  3. cls
  4. arp -a
  5. start iexplore.exe www.bitpacket.cn
  6. ping 127.0.0.1 -n 5 >nul 2>nul
  7. taskkill /f /im iexplore.exe
  8. goto startx
复制代码
    @echo off 关闭回显,多余的提示信息一个都不要。

    :startx是批处理里的标号,指示位置,是跳转的入口地址。

    cls 清理屏幕

    arp -a 显示当前系统的arp表

    start iexplore.exe www.bitpacket.cn  打开IE并使其打开www.bitpacket.cn,加start是为了避免批处理被阻塞,你去掉start就知道什么叫阻塞。

    ping 127.0.0.1 -n 5 是用ping实现5秒延迟,当然这个5秒很不精确,后面的 >nul 是为了让错误消息不出现  2>nul 是为了让正确提示也不出现,总之就是灭口。

    taskkill  用来杀掉进程,/f 为强制 /.im 后面是跟的进程名称。

    goto startx 就是让他跑到标号那里继续执行。


学教育技术,上教育技术论坛!http://www.etthink.com
 楼主| etthink 发表于 2018-9-23 08:25:58 | 显示全部楼层
求一BAT脚本运行某指定路径程序
执行的程序路径及参数如下:
C:\Program Files\McAfee\Common Framework\frminst /forceuninstall
start "" "C:\Program Files\McAfee\Common Framework\frminst.exe" /forceuninstall
这样就可以了,start后面要有个空双引号
因为你要启动的程序路径含有空格,必须加引号。
而start后面的第1对引号内的内容会被当做程序的标题(虽然除了cmd外的程序基本都不能自定义标题),所以必须在前面加一对引号。引号可以是空的,也可以随便包含什么字符,反正没意义。
如果你的程序路径没空格的话,可以不加引号,那么前面也就可以不用空引号
比如对于根目录下的程序用  start c:\frminst.exe   就可以了
也可以用下面这样的方法,start C:\Progra~1\McAfee\Common~1\frminst /forceuninstall
学教育技术,上教育技术论坛!http://www.etthink.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


11关注

462粉丝

7857帖子

推荐阅读更多+
会员达人更多+
广告位

最新信息

更多+

关注我们:教育技术人

官方微信

官方微博

教育技术热线:

13955453231

学教育技术,上教育技术论坛!

教育技术论坛征稿范围:教育技术应用案例、教程文章、优秀作品等。

Email:sf@etthink.com

Copyright   ©2007-2026  应用思考-教育技术论坛  Powered by©Discuz!  技术支持:且行资源    ( 皖ICP备10014945号-4 )