WScript.Shell對象的run和exec
createobject("wscript.shell").run """BAT或EXE的文件路徑及名稱""",0 true
0 表示隱藏運行窗口
true表示在繼續執行腳本中的下一條語句之前,腳本是否等待執行完程序
WScript.Shell對象的run和exec
方法聲明:
Function Exec(ByVal Command As String) As WshExec
Function Run(ByVal Command As String, [ByVal WindowStyle], [ByVal WaitOnReturn]) As Integer
區別:
1、返回值
run的返回值是一個整數,就是0或1成功和失敗兩個狀態,而exec方法的返回值是一個對象,從返回對象中可以獲得控制臺輸出信息和控制臺錯誤信息,即StdOut和StdErr屬性等。
如:
Dim oShell,exeRs
Set oShell = CreateObject("WSCript.shell")
commandLine = "xcopy.exe"
Set exeRs = oShell.Exec(commandLine)
errMsg = exeRs.StdErr.ReadAll()
stdMsg = exeRs.StdOut.ReadAll()
WScript.echo "errMsg:" & errMsg & "stdMsg:" & stdMsg
ret = oShell.run(commandLine, 0, true)
WScript.echo "run method return value:" & ret
Set oShell = Nothing
Set exeRs = Nothing
可以取道控制臺錯誤和控制臺信息。
附記:WshExec類具有屬性ExitCode,ProcessID,Status,StdErr,StdIn,StdOut以及一個函數Terminate,這些屬性和函數都很好理解。
Status屬性具有三個值:
Const WshFailed = 2
Const WshFinished = 1
Const WshRunning = 0
2、執行參數
Run的后兩個參數,一個是cmd窗口的風格,一個是是否等待執行完成。最后一個參數很有用,如果你希望等待本次cmd執行的程序結束后,再執行run后面的語句,設置這個參數為true,否則后面的語句將不等待cmd窗口完成,直接運行。
另外,如果你使用exec 方法的時候,如果希望等待cmd中程序執行完后,再執行后面的語句,也可以通過下面的方法: oExec.StdErr.ReadAll()或者oExec.StdOut.ReadAll(),道理上也應該好理解,要得到輸出的信息,肯定要cmd執行完后才會有輸出的。
WshShell.run函數的參數
set WshShell= CreateObject(“Wscript.Shell”)
WshShell.run "notepad.exe",,
run函數有三個參數,第一個參數是你要執行的程序的路徑,若路徑中存在空格,記得要用""括起來,如 """C:\Program Files\nn.exe"""的形式或者Chr(34)&"C:\Program Files\nn.exe"&Chr(34)的形式,第二個程序是窗口的形式,0是在后臺運行;1表示正常運行;2表示激活程序并且顯示為最小化;3表示激活程序并且顯示為最大化;一共有10個這樣的參數如下表。 第三個參數是表示這個腳本是等待還是繼續執行,如果設為了true,腳本就會等待調用的程序退出后再向后執行。
其實,run做為函數,前面還有一個接受返回值的變量,一般來說如果返回為0,表示成功執行,如果不為0,則這個返回值就是錯誤代碼,可以通過這個代碼找出相應的錯誤。
intWindowStyle 說明
0 隱藏一個窗口并激活另一個窗口。
1 激活并顯示窗口。如果窗口處于最小化或最大化狀態,則系統將其還原到原始大小和位置。第一次顯示該窗口時,應用程序應指定此標志。
2 激活窗口并將其顯示為最小化窗口。
3 激活窗口并將其顯示為最大化窗口。
4 按最近的窗口大小和位置顯示窗口。活動窗口保持活動狀態。
5 激活窗口并按當前的大小和位置顯示它。
6 最小化指定的窗口,并按照 Z 順序激活下一個頂部窗口。
7 將窗口顯示為最小化窗口。活動窗口保持活動狀態。
8 將窗口顯示為當前狀態。活動窗口保持活動狀態。
9 激活并顯示窗口。如果窗口處于最小化或最大化狀態,則系統將其還原到原始大小和位置。還原最小化窗口時,應用程序應指定此標志。
10 根據啟動應用程序的程序狀態來設置顯示狀態。