Scripting

環繞應用程序並等待應用程序完成的腳本

  • November 2, 2015

我需要一個環繞應用程序的 vb 腳本,該應用程序將保持打開狀態,直到應用程序完成。我希望能夠呼叫以下命令

“setup.exe /qb /I Autocad2010.ini /language en-us”

但我需要 vb 腳本一直執行,直到安裝完成。

有沒有人可以幫助解決這個問題。

非常感謝提前

更新後的版本

以下將執行您的安裝程序,然後等待不再有setup.exe執行實例。您可以設置一個最大超時值(這樣它就不會永遠掛起)。

請注意,這無法檢測設置是否完成,只能檢測setup.exe程序是否正在執行。這是一個微小的區別,但卻是一個重要的區別。

Option Explicit

Const PROC_NAME = "setup.exe"
Const RUN_CMD = "setup.exe /qb /I Autocad2010.ini /language en-us"
Const SLEEP_INTERVAL_MS = 1000
Const WAIT_TIMEOUT_MS = 1500000 ' = 1000 * 60 * 25 ms = 25 mins

Dim objWshShell, objWMIService
Dim colProcesses, objProcess
Dim intWaited, blnProcessTerminated

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run RUN_CMD

intWaited = 0
blnProcessTerminated = False
While intWaited < WAIT_TIMEOUT_MS And Not blnProcessTerminated
   Set colProcesses = objWMIService.ExecQuery(_
       "Select * from Win32_Process where Name='" & PROC_NAME & "'")

   blnProcessTerminated = True
   For Each objProcess In colProcesses
       blnProcessTerminated = False
   Next

   WScript.Sleep(SLEEP_INTERVAL_MS)
   intWaited = intWaited + SLEEP_INTERVAL_MS
Wend

這相對簡單:

Option Explicit

Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run "setup.exe /qb /I Autocad2010.ini /language en-us", 1, True

該方法的參數在 MSDN 站點上有Run更詳細的描述。最重要的是,導致腳本一直等到終止。True``setup.exe

引用自:https://serverfault.com/questions/119398