工作中,如果我们能够将批处理使用的炉火纯青的话,对于效率的提升作用是非常明显的。今天,我们从日常工作的角度来给大家分享一些实例。
一、运行测试脚本
在完成一些Case编写后,为了比较方便的回归执行,我们一般会编写一个批处理脚本来完成脚本的启动执行。
如果仅仅在我们自己的机器上执行的话,我们直接将路径写死就可以了,比如说…\runtest.exe -vl2 -xo –e …\script.txt
但是如果Case的执行会分布到多台机器上执行,这时就要考虑整个执行过程的实现了。可以发现,关键的地方就是获取测试框架路径,而一般测试框架会将自己的路径添加到注册项中,于是我们只要能够从注册表中获取到测试框架路径,问题就解决了。
如何使用批处理读取注册表的路径呢?使用reg命令…
第一步,获取reg query的结果,输出到temp.txt中备用
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\runtest.exe"/ve > temp.txt
第二步,使用for命令,截取出最后的路径
for/f "skip=1 tokens=1,2,*"%i in(temp.txt) do set x=%~dpk
此处批处理的含义,分割temp.txt中的每一行,将第一项赋给%i,第二项赋给%j,其余项赋给%k,再使用~dp将%k变量的绝对路径目录获取到。
关键点解决了,剩下的就是批处理的拼装了。
看下拼装后的代码:
PS:由于reg命令在Windows XP SP1版本存在bug,如果采用上面的方法存在问题,我们可以使用Python脚本辅助解决。增加Python脚本辅助后,批处理如下:
二、检查防火墙例外
在对产品安装卸载进行测试时,有时会测试产品是不是能够正常添加到防火墙例外中,于是就有了验证点,在防火墙例外中是不是包含了程序exe。调研后发现,防火墙例外可以通过两种简单的方式来验证,一种是注册表项,一种是批处理。
但存在一种情况是注册表中没有但防火墙中产品已经处于例外了···这时我们可以使用批处理进行处理。
首先,产品安装前,先确保防火墙例外中不包含相应产品,批处理实现如下:
netsh firewall delete allowedprogram "test.exe"
也就是将例外中的test.exe删除掉,确保系统环境的干净度。
安装产品,检查防火墙例外中是否包含了相应产品,批处理实现如下:
netsh firewall show allowedprogram
上面的命令,可以输出所有的例外中的程序,我们可以再通过程序exe名称来过滤,看是否包含在了例外中。这样我们就可以封装一个函数,来判断是否已经在例外中了。
使用一段时间后,会发现win7下有时会存在问题。发现win7下防火墙有了升级版本netsh advfirewall,于是有了win7上的批处理命令:
netsh advfirewall firewall show rule name="test.exe"
重新封装函数后,代码如下:
三、结语
以上是对工作中的两个场景做了总结分享,批处理或者windows命令在很多地方都可以提高我们的工作效率,诸如:regedit打开注册表,services.msc打开服务管理,mstsc打开远程连接,control打开控制面板等等,当然我们也可以使用一些批处理脚本来协助我们的日常工作,诸如清理系统垃圾、bat实现打包部署、bat实现一些服务的重启等等操作。
在工作中,我们要有意识的将工作中的一些事情脚本化,提升工作效率。
-----------------------------------------------------------------------
欢迎回复内容到“搜狗测试”公众号,与我们一起分享你的那些关注点。