因为平时工作大都使用linux系统处理问题,所以之前一直在使用bat批处理处理windows下的一些细微的改动操作(个人感觉powershell处理很多问题时更顺手些,把linux 下的很多工具和操作方式都给偷去了,不过偷的不完全,仍没linux下的shell强大)。对windows下的vbs脚本也没有去仔细的了解,后来因为发现很多操作方面bat 操作又很弱,而需要很多小的功能时,只能从“谷哥度娘”上找答案找工具。而网上找的工具又大会带GUI界面的处理速度上不行(用的测试机年龄有点大了,自己的本本又不想在上面老折腾,出问题了重装麻烦。)。因为之前也大量的从网上COPY别人粘的vbs脚本,但并未细细品,只要解决问题不就行了。不过一日闲来无事到微软官网上无意点到了vbs脚本的介绍,细看了一下,才发现其的强大。而且处理速度也不比cmd强,个人感觉比cmd还快。
上面罗嗦了一大堆,下面看两个常见常用的例子吧。
第一个,我在“windows下的计时等待”的这篇日志里已经写过。计时等待,那个批处理里的计时还有调用的vbs实现的。为wscript.sleep 加上等待的时长,以毫秒为单位。(这要在linux下一条sleep命令解决)。
第二个,修改IP,bat批处理改的方面网上太多了。这里不再写,只列出vbs修改的代码。如下:
strComputer = “.”
Set objWMIService = GetObject(“winmgmts:” & strComputer & “rootcimv2”)
Set colNetAdapters = objWMIService.ExecQuery _
(“Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE”)
strIPAddress = Array(“192.168.1.141”) 改IP地址,多个IP可以以”,”格开,可以写多个
strSubnetMask = Array(“255.255.255.0”) 改子网掩码
strGateway = Array(“192.168.1.100”) 改网关,若要加DNS,请加arrDNSServers = Array(“202.101.172.35”)句
strGatewayMetric = Array(1)
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If errEnable = 0 Then
WScript.Echo “The IP address has been changed.”
Else
WScript.Echo “The IP address could not be changed.”
End If
Next
注:上面的红色字体只是方便理解写上去的,用时就不要了也粘进去了。不过该脚本运行后会把所有的网卡的IP都改为192.168.1.141,如果你有多块网卡,请慎用。
如果你有多块网卡时,可以把上面的脚本里的(“Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE”)改为
(“Select * from Win32_NetworkAdapterConfiguration where MACAddress=’00:67:28:52:74:6C’”),也就是你要改的网卡的MAC地址。
使用DHCP方式则为下面的代码:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" & strComputer & "rootcimv2")
Set colNetAdapters = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapter In colNetAdapters
    errEnable = objNetAdapter.EnableDHCP()
     If errEnable = 0 Then
        Wscript.Echo "DHCP has been enabled."
    Else
        Wscript.Echo "DHCP could not be enabled."
    End If
Next

至于具体的Win32_NetworkAdapterConfiguration 所能内调的参数可以查看http://msdn.microsoft.com/en-us/library/aa394217(VS.85).aspx上面的具体介绍。这里也是通过调用WMI函数进行处理的。
除此之外vbs脚本还有其他很多功能,比如:打开文件写入信息、修改IP代理、查看内存信息等等、处理word等等,只有windows里的经常使用到的方面,其都有涉足。还是比较强大。具体其涉及到的分类可以查看http://www.microsoft.com/china/technet/community/scriptcenter/default.mspx页,有详细的分类。
vbs脚本最好使用cscript 脚本文件名使用。如果直接双击运行,有些脚本会一条条的出msgbox。
编写vbs可以使用的工具
ADSI Scriptomatic、Tweakomatic、The Scriptomatic Tool。以上三个工具微软官网上都能下到。另外如果想写系统服务相关的程序,我个人感觉wmi cim studio也是不能少的,该工具在WMITools.exe包里有。