在windows排程下,如何關閉因排程所呼叫出來的IE視窗

近來遇到一個狀況…就是在windows下,利用排程所執行的網頁程式居然沒正常執行…多天監控的結果,發現有時有執行,有時沒執行…再繼續觀察,發現問題似乎在於排程呼叫出IE去執行該網頁程式後,如果沒人手動關掉該IE,下次排程時間到時,則無法正常被呼叫起來!

不過,記憶中以前在設定排程時,有懷疑過可能有此狀況,所以當時有測試過。在模糊…模糊的記憶中,記得測試結果是沒有此問題…

但,現在的狀況就是有問題,所以找了些資料看看,理出一個作法…簡單的說,就是在原本的排程執行前,再增加一個排程,將上次排程所呼叫出來的IE給關掉…
  1. 新增一個 .bat 檔,負責關掉之前所開啟的IE
  2. 建立一個新排程,時間訂在原本的排程之前。呼叫上一步驟的 .bat
  3. 執行原本排程
.bat 的內容,則是利用 taskkill 去砍掉之前IE的process… 問題是…怎麼辨識要砍那個IE呢?看了一下 taskkill /? 發現有個參數可以做條件的篩選,於是,我的指令如下…
taskkill /FI "WINDOWTITLE eq http://myurl/myprog.jsp - Microsoft Internet Explorer" /IM iexplore.exe

在我的電腦上測試(xp professional),執行的結果如我預期…但,離奇的是一樣的指令到了server上,卻說找不到可以砍的IE process。但我怎麼看,都看不出差異,找不到問題
所以呢,只好投機,改成如下…
taskkill /FI "WINDOWTITLE eq http://myurl/*" /IM iexplore.exe

執行的結果,恢復正常,如我所預期的了…

留言