因為工作需求,偶爾需要接觸到網站伺服器以及網頁程式的問題。
最近,因為公司的需要,需要利用網頁程式呼叫主機上的批次檔。
以舊有寫法,在 Windows 2000,即 IIS 5.0 是完全沒問題的,但在 Windows 2003,即 IIS 6.0 卻問題百出。
在公司裡,這部份的問題,不算是我的工作範圍,不過多一個人想,就多一個機會,這可以說三個臭皮匠勝過一個豬哥亮(噢~不,是諸葛亮)。也因此,若遇到比較古怪的問題,公司總會問問看我有沒有什麼想法,能夠協助。
稍早有提到,我們要用網頁程式去呼叫主機上的批次檔,一開始,一直出現權限不足的問題。我看了看主機及程式後,我提出我的看法。因為主機是 NTFS 之故,所以會有權限設定問題,我提出了針對需要寫入以及可能用到的程式,予以使用者權限,這樣基本上是要能解決權限不足的問題。
果然,如同我所想的,是設定問題,網頁程式跑起來沒問題。不過,為什麼批次檔不會動?!心想,可怪了,該給的權限都沒問題,命令列也沒打錯呀~真是頭痛,看來要花點時間了。花了兩晚,共用三個小時的時間,總算知道可能原因了。
不過,因為公司用的批次檔比較特殊,沒想到在那當下又出了問題了,哇哩勒~心裡吶喊著,為什麼會醬子~我多在網頁裡下了點參數試試,看問題點在哪邊。上網找了下資訊,雖是英文頁面,啃得很累,但心都涼了,該不會無解吧(指的是我們的需求)。
後來,主管提出了一個看法,就是若用排程的方式在本機跑,這樣應該可行吧。我想了想,或許可行,但問題又來了,要怎麼用命令列跑排程。哇賽~這難倒我了,看來我又要多找找資料了。在這同時,我真的要說,很恨自己英文沒學好,啃英文啃得很累,用中文關鍵字,不一定找得到,用英文當關鍵字,命中率會比較高一點,可惜,啃英文真的很累,奉勸大家,要多學英文,真的!
後來,用了英文關鍵字有找到,中間雖也歷經許多波折,但結果是完美的,所以,為了這個因素,我一定要好好地記錄一下。
- 在 IIS 6.0 若採用 WSH (Windows Script Host) 或 aspexe(ASP 元件,可用來呼叫執行程式)或其他相關元件,建議在 IIS 6.0 內新增一個新的應用程式集區,並將該應用程式集區之識別身份設為「本機系統」。之後,再於網站或網站內之一特定資料夾之應用程式集區,設為新增的應用程式集區。
- 在 Windows 下,欲使用命令列執行排程,可用 schtasks 來執行,再給予適當的參數即可。