天天看點

windows控制台程式自動重新開機

有時控制台程式由于日志更改或其他原因需要定時重新開機,在Linux平台有很多工具可以實作,但是windows指令有限,實作起來有些麻煩。最近有個項目需要處理這種情況,搜尋了很久,并寫了一些代碼才解決。

程式為java編寫,要重新開機需要解決兩個問題--殺掉java程序和重新開機啟動程式。

這裡還有一個隐含的問題,如果殺掉程序後馬上啟動新的程式,有的時候會出現兩個後果交叉的情況,雖然程式是先調用了殺程序再啟動,但是啟動的程序又被殺掉了。

為了避免這種情況出現,在兩個操作之間需要延時一會。

這樣,問題就歸結為:

1 殺掉java程序;

2 延時;

3 啟動新的java程序;

基本确定的解決方案是:windows計劃任務+bat批處理+exe程式

第一步,殺掉java程序,windows本身隻有根據PID殺程序的方法,由于每次程式運作pid是動态的,是以不容易處理。網上有免費的工具pskill,可以根據程序名進行處理,格式:

pskill 程序名

第二步,延時,本來打算試用pause,但是他需要人為幹預。後來隻能自己想辦法了。用C++寫一個簡單的sleep程式,格式:

sleep 20000

延時20秒;

第三步,調用java程式。

第四步,添加計劃任務,調用job.bat。

注意,如果試用AT指令添加計劃任務,程式啟動後會在背景運作,如果你要看控制台輸出的資訊,需要在控制台裡添加計劃任務,并且調用java的時候試用start指令控制。

代碼:

REM job.bat

pskill java.exe

runjob.bat

rem runjob.bat

rem 延時放在這裡的原因就是讓java運作以前先等待前面的程式退出以後在執行。

start cmd /c java MyClass

<a href="http://www.sunhat.com.cn/soft/pskill.rar">http://www.sunhat.com.cn/soft/pskill.rar</a>

上一篇: NFS筆記