如何设置一个进程超时在Windows 7下?(How to set a timeout for a

2019-07-04 01:52发布

我想先从Windows批处理文件的程序。 但该方案应该有一定的超时值后停止。 例如:运行程序,60秒,60秒后停止。

在Linux下,有这个漂亮的timeout命令做我想要的。 Windows还具有timeout命令,但它只是暂停命令,以延迟执行。 有没有在Windows下别的东西这样做呢?

安装:Windows 7中,64位,专业

Answer 1:

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


Answer 2:

巴厘岛℃具简洁,中肯的回答。 我需要的东西一点点更多的其他功能,可重复使用。 基于巴厘岛C'S例。 我想出了这个。 如果有人需要我一样。

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

可以充实矿采取优先顺序,这样更多的参数,但我没有为它的需要。 应该不难添加。



Answer 3:

不要在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


Answer 4:

start + timeout + taskkill等待完全给定的时间。 因为我需要停止等待,如果过程的早期退出 ,我创建了C ++自己的解决方案。

tuxliketimeout程序模仿GNU超时 。 随意下载和从编译

https://github.com/cernoch/tuxliketimeout



文章来源: How to set a timeout for a process under Windows 7?