您的位置:首页 > 其它

[效率提升]工作中的那些命令行

2015-08-17 20:30 309 查看
工作中,如果我们能够将批处理使用的炉火纯青的话,对于效率的提升作用是非常明显的。今天,我们从日常工作的角度来给大家分享一些实例。

一、运行测试脚本

在完成一些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脚本辅助后,批处理如下:



其中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实现一些服务的重启等等操作。

在工作中,我们要有意识的将工作中的一些事情脚本化,提升工作效率。

-----------------------------------------------------------------------

欢迎回复内容到“搜狗测试”公众号,与我们一起分享你的那些关注点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: