- 您不使用「Option Explicit」;這是魯莽的。
- 你不會在你的Dims附近/剛剛初始化;這很容易出錯。
- 您只使用變量(objShell)一次;這是浪費。
- 在比較中混合使用數據類型(整數與字符串);這很愚蠢。
- 您不仔細閱讀文檔(仔細);這是無禮的。
從Docs:
bWaitOnReturn
可選。布爾值,指示在腳本中繼續執行下一個 語句之前,腳本是否應該等待 程序完成執行。如果設置爲true,腳本執行將暫停,直到程序完成 ,並且Run返回 程序返回的任何錯誤代碼。如果設置爲false(默認值),則在啓動程序後立即返回 ,並自動返回0(不是 將被解釋爲錯誤代碼)。
爲了避免因丟失的dcdiag或不同版本FINDSTR或錯誤理解/使用這些程序的不必要的問題,我用「最小ERRORLEVEL二傳手」:
type ex0.vbs, ex1.vbs
ex0.vbs
WScript.Quit 0
ex1.vbs
WScript.Quit 1
和驗證碼:
Option Explicit
Dim consult : consult = WScript.CreateObject("WScript.Shell").Run("%comspec% /c ex0.vbs | ex1.vbs", 0, True)
If consult = "0" THEN
WScript.Echo consult, "OK"
else
WScript.Echo consult, "ERROR"
end If
輸出:
cscript 36531325.vbs
1 ERROR
使用
.Run("ex0.vbs | ex1.vbs", 0, True)
地看到,你需要一個殼(%COMSPEC%)使用shell的功能(|)和
.Run("%comspec% /c ex0.vbs | ex1.vbs", 0)
爲understandig的bWaitOnReturn參數的重要性。