Wscript.Shell是用来调用程序的组件,可以通过它来执行命令行。不过需要注意,如果之前注销过wshom.ocx组件,将会无法创建该对象
它有exec和run两个方法,下面是通过示例表示使用方法:
Set sh = CreateObject("Wscript.Shell")
Set cmdobj = sh.exec("ping baidu.com") '使用exec方法可以得到返回结果,但执行时会弹出一个黑框
cmdresult = cmdobj.stdout.ReadAll()
MsgBox cmdresult
sh.run "ping baidu.com >> pingresult.txt" '使用run方法不能得到返回结果,只能输出到文件再读文件
Set sh = Nothing
----------------------------------------------------
sh.run "ping baidu.com",0,True 'run方法有两个参数,第二个参数表示窗口样式,0为不弹出窗口,1为弹出窗口.第三个参数表示是否等待运行完毕.即同步还是异步
----------------------------------------------------
注意:命令行中所指的路径都是相对于命令行当前所在的路径,而不是BAT文件所在路径
例如 D:\123\test.bat 这个文件,里面的内容是
echo 123 >> result.txt
那么如果是双击运行,或者是在 D:\123> 这个位置下运行 test.bat ,则产生的结果在 D:\123\result.txt 位置
而如果是
C:\> D:\123\test.bat 这样运行,则结果在 C:\result.txt 位置.
因此无论什么情况下,最好先在BAT文件前加上如下内容,使BAT运行时先切换命令行到它所在的目录下.确保不会有误操作.
for %%i in (%0) do set curDir=%%~dpi
cd /d %curDir%