JohnyV Asked: 2010-03-05 19:10:29 +0800 CST2010-03-05 19:10:29 +0800 CST 2010-03-05 19:10:29 +0800 CST 环绕应用程序并等待应用程序完成的脚本 772 我需要一个环绕应用程序的 vb 脚本,该应用程序将保持打开状态,直到应用程序完成。我希望能够调用以下命令 “setup.exe /qb /I Autocad2010.ini /language en-us” 但我需要 vb 脚本一直运行,直到安装完成。 有没有人可以帮助解决这个问题。 非常感谢提前 scripting vbscript 1 个回答 Voted Best Answer fission 2010-03-05T23:34:18+08:002010-03-05T23:34:18+08:00 更新后的版本 以下将执行您的安装程序,然后等待不再有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更详细的描述。最重要的是,导致脚本一直等到终止。Truesetup.exe
更新后的版本
以下将执行您的安装程序,然后等待不再有
setup.exe
运行实例。您可以设置一个最大超时值(这样它就不会永远挂起)。请注意,这无法检测设置是否完成,只能检测
setup.exe
进程是否正在运行。这是一个微小的区别,但却是一个重要的区别。这相对简单:
该方法的参数在 MSDN 站点上有
Run
更详细的描述。最重要的是,导致脚本一直等到终止。True
setup.exe