脚本环绕应用程序并等待应用程序完成

脚本环绕应用程序并等待应用程序完成

我需要一个可以环绕应用程序的 vb 脚本,该脚本将保持打开状态直到应用程序完成。我希望能够调用以下命令

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

但我需要 vb 脚本保持运行直到安装完成。

有谁可以帮忙解决这个问题?

提前感谢

答案1

更新后的版本

下面将执行您的安装程序,然后等待不再有实例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

该方法的参数Run有更详细的描述在 MSDN 网站上. 最重要的是,True导致脚本等待直到setup.exe终止。

相关内容