2012-11-22 21 views
18

我想用一個windows批處理文件啓動一個程序。但程序應該在某個超時值後停止。例如:運行程序60秒,並在60秒後停止。如何在Windows 7下設置進程超時?

在Linux下,有這個不錯的timeout命令來做我想做的事。 Windows也有一個命令timeout,但它只是暫停命令,以延遲執行。 Windows下還有其他的東西可以做到嗎?

安裝:Windows 7中,64位,專業

回答

26
start yourprogram.exe 
timeout /t 60 
taskkill /im yourprogram.exe /f 
+0

謝謝,效果很好。是否也可以使用taskkill停止另一批處理腳本?我無法弄清楚如何做到這一點。 –

+3

沒問題,這有點棘手。因爲它們都在同一個'cmd.exe'過程中,所以需要另一種分隔方法。你可以給它一個像「開始」mybatch「batchfile.bat」這樣的特定標題,然後你就可以像taskkill/fi那樣使用taskkill了。WINDOWTITLE eq mybatch「/ f' –

+0

@John你需要使用標題命令。 – ElektroStudios

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 
+0

謝謝你的解釋! –

10

巴厘島℃具簡潔,中肯的回答。 我需要一些更多的功能和可重用的東西。 基於巴厘島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 

可以充實礦採取優先順序,這樣更多的參數,但我沒有爲它的需要。不應該很難添加。

+0

非常有用,非常感謝! –

+0

此版本的優點是不會等待整個超時時間過早結束。如果你不關心他們,只要忽略優先和隱藏的東西。 – ndemou