我有一個X.exe
程序需要大約2-6小時才能完成。確切的時間是未知的,但我想實現一個6.5或7小時的門檻。如果這個程序在這段時間內沒有返回任何值,它將被殺死。我如何使用批次*.bat
文件實現此目的?超時或關閉過程完成
這是我到目前爲止:計時器bat1.bat
和實際bat2.bat
。
bat1.bat:
start cmd /C bat2.bat & timeout /t 25200 & taskkill /im X.exe /f
bat2.bat:
cd blah
bat1.bat
這種方法的問題是,只有後25200秒(或7小時),定時器將被停止,並且它在該限制之前不會被終止。如何告訴計算機,如果程序X.exe
已完成,那麼不要再等待了?
任何幫助表示讚賞!
如果將它設置爲以計劃任務運行,則可以告訴它在8小時後停止任務。不幸的是,您在任務調度程序中唯一的選項是1,2,4,8或12小時。你可以做的是使用'TASKLIST'命令來檢查程序是否每300秒運行一次。如果它沒有運行,那麼bat文件可以退出。如果它仍在運行,請檢查目前爲止運行了多少秒,如果它是25,200秒,請將其關閉。 – Squashman
@Squashman感謝你的想法和命令。我有一個簡單的腳本'tasklist/fi「imagename eq X.exe」',但是如何返回'X.exe'運行的時間量?你能提供一個正式的答案,以便我也可以接受嗎?謝謝!!! – kensaii
設置三個變量。 %checktime%%elapsedtime%和%killtime%。使用帶TIMEOUT命令的%checktime%變量。然後使用'TASKLIST'命令查看進程是否正在運行。如果正在運行,則將%checktime%添加到%elapsedtime%。然後檢查%elapsedtime%是否大於或等於%killtime%。如果kill time條件沒有被滿足,那麼在'TIMEOUT'命令之前使用'GOTO'命令循環回標籤。如果殺死時間條件已滿足,則使用'TASKKILL'命令停止該進程。 – Squashman