使用wait和timeout的批处理命令

时间:2017-08-15 21:19:44

标签: batch-file install msiexec

我试图一个接一个地安装多个程序。我如何等待一个应用程序的设置完成,如果持续超过600秒则终止?

到目前为止,这是我的代码:

ECHO "Installing 7-Zip 16.04 (x64 edition)"
START "7-Zip 16.04 (x64 edition)" /WAIT msiexec -i "7z1604-x64.msi" /qn
ECHO "Installing Foxit Reader"
START "Foxit Reader" /WAIT "FoxitReader821_enu_Setup.msi" /verysilent

2 个答案:

答案 0 :(得分:0)

您应该能够使用pslist https://docs.microsoft.com/en-us/sysinternals/downloads/pstools中的PsTools来检查流程是否正在运行。

:ZIPCHECK
REM Use the actual process name here, obviously
pslist /accepteula | findstr /I "7\-zip" > file.txt
set INS_PRCNAM=
for /F "tokens=1" %%A in (file.txt) do set INS_PRCNAM=%%A
if "%INS_PRCNAM%" == "" goto ZIPDONE
REM Put timer logic here, including either a sleep.exe or sleep.ps1 utility
goto ZIPCHECK
:ZIPDONE

REM Cleanup
:ENDIT
if EXIST file.txt del /Q file.txt
set INS_PRCNAM=

您可以在其他地方找到的计时器逻辑,但通常使用%DATE%%TIME%环境变量以及SET命令的文本修改功能,以及arithetic支持来自SET /A

终止可以由pskill实用程序完成,也可以从PsTools工具包完成。

或者,您可以使用PowerShell:

powershell "Get-Process -Name '7-Zip'" > file.txt

答案 1 :(得分:0)

为什么不使用 PSAppDeployToolkit 。这会让你的生活更轻松吗?