我试图一个接一个地安装多个程序。我如何等待一个应用程序的设置完成,如果持续超过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
答案 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 。这会让你的生活更轻松吗?