偵測程式沒running就執行它(ifNotRunThenRun)
最近需要寫一個程式來測試”某程式”是否正常執行中,如果沒有被執行起來,就執行它。
但心裏有另一個問題…是不是能不寫程式就做到?
答案是:”可以”
透過以下bat檔,就可以偵測suu.exe這個執行檔是否執行當中(task list)~,如果沒有執行,就把它執行起來
tasklist /FI "IMAGENAME eq suu.exe" /FO CSV > search.log
FOR /F %%A IN (search.log) do if %%A == 資訊: goto process_off
:process_on
goto end
:process_off
start D:\MyProject\UrlSyncQueue\suu.exe
:end
delete search.log
以下解釋一下上面的bat檔:
1.將工作管理員裏面process為suu.exe的寫入到search.log檔案
2.讀出search.log裏面的每一行,如果該行為"資訊"開頭,則Jump到process_off,否則到process_on。(不同的作業系統,當找不到檔案時,會輸出不一樣的資訊,可以把最後一行的delete search.log刪掉,然後打開來觀察最後輸出的結果,藉以調整當執行檔找不到的這個開頭字串要輸入什麼。)
3.如果到process_on,跳到end
4.如果到process_off,啟動指定的執行檔
你可以把上面這段指令中藍色的部份,換成出現在tasklisk的執行檔名,而紅色的部份,換成你的執行檔完整路徑+檔名。黃色的部份換成一個唯一的log名稱即可。
撰寫這個bat要注意二點:
1.你的執行檔路徑裏面不能有中文(如果有空白就加雙引號括住),否則不能正確執行。
2.這個命令會寫入一個叫search.log的文件。如果一個系統裏面有二個以上的這種bat檔,建議把search.log換成一個唯一的檔名。