我想用一個windows批處理文件啓動一個程序。但程序應該在某個超時值後停止。例如:運行程序60秒,並在60秒後停止。如何在Windows 7下設置進程超時?
在Linux下,有這個不錯的timeout
命令來做我想做的事。 Windows也有一個命令timeout
,但它只是暫停命令,以延遲執行。 Windows下還有其他的東西可以做到嗎?
安裝:Windows 7中,64位,專業
我想用一個windows批處理文件啓動一個程序。但程序應該在某個超時值後停止。例如:運行程序60秒,並在60秒後停止。如何在Windows 7下設置進程超時?
在Linux下,有這個不錯的timeout
命令來做我想做的事。 Windows也有一個命令timeout
,但它只是暫停命令,以延遲執行。 Windows下還有其他的東西可以做到嗎?
安裝:Windows 7中,64位,專業
start yourprogram.exe
timeout /t 60
taskkill /im yourprogram.exe /f
不要在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
謝謝你的解釋! –
巴厘島℃具簡潔,中肯的回答。 我需要一些更多的功能和可重用的東西。 基於巴厘島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
可以充實礦採取優先順序,這樣更多的參數,但我沒有爲它的需要。不應該很難添加。
非常有用,非常感謝! –
此版本的優點是不會等待整個超時時間過早結束。如果你不關心他們,只要忽略優先和隱藏的東西。 – ndemou
謝謝,效果很好。是否也可以使用taskkill停止另一批處理腳本?我無法弄清楚如何做到這一點。 –
沒問題,這有點棘手。因爲它們都在同一個'cmd.exe'過程中,所以需要另一種分隔方法。你可以給它一個像「開始」mybatch「batchfile.bat」這樣的特定標題,然後你就可以像taskkill/fi那樣使用taskkill了。WINDOWTITLE eq mybatch「/ f' –
@John你需要使用標題命令。 – ElektroStudios