您好,登錄后才能下訂單哦!
vbScript 中 WScript.Shell 對象的 run 和 exec 函數功能使用詳解
函數聲明:
Set Ws = CreateObject("Wscript.Shell")
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 執行完后才會有輸出的。
Ws.Run 函數的參數:
Set Ws = CreateObject("Wscript.Shell")
Ws.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,則這個返回值就是錯誤代碼,可以通過這個代碼找出相應的錯誤。
窗口風格 說明
0 隱藏一個窗口并激活另一個窗口。
1 激活并顯示窗口。如果窗口處于最小化或最大化狀態,則系統將其還原到原始大小和位置。第一次顯示該窗口時,應用程序應指定此標志。
2 激活窗口并將其顯示為最小化窗口。
3 激活窗口并將其顯示為最大化窗口。
4 按最近的窗口大小和位置顯示窗口。活動窗口保持活動狀態。
5 激活窗口并按當前的大小和位置顯示它。
6 最小化指定的窗口,并按照 Z 順序激活下一個頂部窗口。
7 將窗口顯示為最小化窗口。活動窗口保持活動狀態。
8 將窗口顯示為當前狀態。活動窗口保持活動狀態。
9 激活并顯示窗口。如果窗口處于最小化或最大化狀態,則系統將其還原到原始大小和位置。還原最小化窗口時,應用程序應指定此標志。
10 根據啟動應用程序的程序狀態來設置顯示狀態。
參數(的)詳細信息可以參考 msdn:
http://msdn.microsoft.com/zh-cn/library/ateytk4a(en-us,VS.85).aspx
http://msdn.microsoft.com/zh-cn/library/d5fk67ky(en-us,VS.85).aspx
注:經過實驗驗證,執行一般的exe,建議使用Exec()
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。