TIPS-指定主控台應用程式的工作目錄

寫了一個轉檔用的Console Application,執行時會將處理過程資訊寫入執行目錄下的Log檔以利偵錯,經手動測試一切良好。

將轉檔程式納入SQL Job排程的步驟,卻發現程式有執行,卻沒有產生Log檔。想了一下,推測是工作目錄問題,到Windows\System32目錄下一找,果然Log檔乖乖地躺在那裡。換句話說,當SQL Job呼叫轉檔程式時,工作目錄被指向System32,所以new StreamWriter("blah.txt")就變成System32\blah.txt。

以前要解決這類問題,我都會建立一個批次檔,然後在第一列執行CD(Change Directory)改變工作目錄,例如: DataConv.bat

CD D:\SchTasks\DataConv
DataConv.exe arg1

然後讓SQL Job改呼叫DataConv.bat檔,而不要直接執行DataConv.exe,以便掌控工作目錄指向檔案所在位置。這回,我決定學會怎麼讓DataConv.exe更聰明一點,自己把工作目錄切換到EXE檔所在位置,不要勞煩別人幫忙。

對好威的.NET來說,這肯定是小事一椿,這樣就行了:

            Directory.SetCurrentDirectory(
                Path.GetDirectoryName(
                    Assembly.GetExecutingAssembly().Location));
歡迎推文分享:
Published 03 November 2010 10:48 AM 由 Jeffrey
Filed under: ,
Views: 6,509



意見

# frank said on 09 May, 2011 01:32 AM

感謝,第一篇看到您的文章就解決我的問題

連這種西狼骨頭您都知道

實在是太崇拜了(嬌羞狀)..

XD

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<November 2010>
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication