CreateProcess無法將結果重新導向至檔案 |
缺席
|
wei0510
一般會員 ![]() ![]() 發表:9 回覆:2 積分:2 註冊:2009-05-19 發送簡訊給我 |
大家好,我使用了CreateProcess API來呼叫一支別人寫的console應用程式,並且希望能將其輸出運用導向符號">>"導向至檔案,但該程式有許多的參數,且參數多為檔案路徑,此時CreateProcess所開啟的CMD.exe就會顯示"檔案名稱、目錄名稱或磁碟區標籤語法錯誤"。
這是我的程式碼片段: String Command, FilePath1 , FilePath2 , TempPath; Command = "CMD.exe /k " FilePath1 " " FilePath2 " \>> " TempPath; CreateProcess( NULL,Command.t_str(),NULL,NULL,false,0,NULL,NULL,&StartupInfo,&ProcessInfo); 其中FilePath1、FilePath2 、TempPath都有經過GetShortPathName() API轉換為短檔名了,且於路徑前後都再加上雙引號以預防萬一。 另外我嘗試過去除重新導向至檔案的片段,將其變更為: String Command, FilePath1 , FilePath2; Command = "CMD.exe /k " FilePath1 " " FilePath2 ; CreateProcess( NULL,Command.t_str(),NULL,NULL,false,0,NULL,NULL,&StartupInfo,&ProcessInfo); 這樣是可以執行的,以釐清問題不是出在長短檔名轉換及檔案路徑不正確這兩點。 另外我也試過直接開啟CMD.exe,用手動的方式輸入Command並且執行,是能正確的將其結果導向至指定檔案。 搜尋後發現版上其實有幾篇與這類似的問題,但大多沒有比較完整的結論,回文內的各種方式我也都有試著使用看看,但都沒有效果,所以想再問一次,看看這段時間內是否有人已經找出這個問題的原因了。 編輯記錄
wei0510 重新編輯於 2009-08-13 15:43:19, 註解 無‧
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
wei0510
一般會員 ![]() ![]() 發表:9 回覆:2 積分:2 註冊:2009-05-19 發送簡訊給我 |
|
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |