如何在Windows 7下为进程设置超时?

时间:2012-11-22 14:53:00

标签: batch-file timeout

我想用Windows批处理文件启动一个程序。但程序应该在一定的超时值后停止。例如:运行程序60秒并在60秒后停止。

在Linux下,有一个很好的timeout命令来做我想要的。 Windows还有一个timeout命令,但它只是暂停命令,以延迟执行。 Windows下还有其他东西可以这样做吗?

设置:Windows 7,64位,专业版

5 个答案:

答案 0 :(得分:33)

start yourprogram.exe
timeout /t 60
taskkill /im yourprogram.exe /f

答案 1 :(得分:12)

Bali C简明扼要地回答了问题。 我需要一些更有特色和可重复使用的东西。 基于Bali C的例子。我想出了这个。 如果有人需要和我一样。

your.bat

REM...

CALL STARTwaitKILL..bat /relative/path/your_program.exe

REM...

STARTwaitKILL.BAT

@ECHO OFF 
IF[%1]==[] GOTO EOF
IF NOT EXIST %1 GOTO EOF

REM SET PRIORITY=/NORMAL
REM ADJUST PRIORITY, BELOWNORMAL LETS BATCH FILE RUN MORE SMOOTHLY
REM WITH A PROGRAM THAT CONSUMES MORE CPU. SEE ABOUT MAXWAIT BELLOW
SET PRIORITY=/BELOWNORMAL
REM SET PRIORITY=/LOW
REM 0 NORMAL WINDOW :: 1 NO WINDOW :: 2 MINIMIZED WINDOW
SET /A HIDDEN=1
REM MAXWAIT HERE IS MORE LIKE MINIMUM WAIT IN WINDOWS.
SET MAXWAIT=10
SET WAITCOUNT=0

SET ARGS=/I %PRIORITY%
IF %HIDDEN% EQU 1 SET ARGS=%ARGS% /B
IF %HIDDEN% EQU 2 SET ARGS=%ARGS% /MIN

START %ARGS% %1

:WAIT
IF %WAITCOUNT% GEQ %MAXWAIT% GOTO KILL_IT

TIMEOUT /T 1 > NUL
SET /A WAITCOUNT+=1
FOR /F "delims=" %%a IN ('TASKLIST ^| FIND /C "%~nx1"') DO IF %%a EQU 0 GOTO RUN_DONE
GOTO WAIT

:KILL_IT
TASKKILL /IM %~nx1 /F > NUL
:RUN_DONE

可以充实矿石以获取更多优先权等论据,但我没有必要。应该不难添加。

答案 2 :(得分:4)

在Windows中不存在延迟应用程序或设置应用程序超时的任何命令

Windows中的超时是延迟CMD / Batfile的执行过程,没有更多的实用程序。

你可以使用外部工具,我不记得任何现在的名字,这么多地下软件,对不起,但我记得在autoit官方论坛上存在一个类似的命令行工具来启动应用程序设置超时, 也许在工具NIRCMD或ps2exec中,检查他们的帮助文件,或WAIK工具包内的人。

这是唯一可以做到的事情:

@Echo OFF

:: First launch the app in background mode, because some applications stops the execution of CMD.
Start /B ".\Dir\Your app.exe"

:: Then stay in background for a certain time
Timeout /T "Seconds"

:: Continue your code...
Pause&Exit

答案 3 :(得分:3)

start + timeout + taskkill等待完全给定时间。由于我需要停止等待进程退出,我用C ++创建了自己的解决方案。

tuxliketimeout程序模仿GNU timeout。随意从

下载和编译

https://github.com/cernoch/tuxliketimeout

答案 4 :(得分:0)

在Windows 10中,最简单的方法是使用scriptrunner

通过运行暂停命令来演示超时(这将终止被调用的进程):

expo upload:android