iT邦幫忙

0

ProcessStartInfo 呼叫 .Bat檔案

各位大大好:
目前遇到狀況是使用ProcessStartInfo 呼叫 .Bat檔案
https://ithelp.ithome.com.tw/upload/images/20201216/20128458dMzBAHJpAi.png
建置完成後的.exe檔案交給別台電腦的環境只能正常開啟winform的視窗,執行按鈕會顯示錯誤,認為問題應該是路徑的原因,但不知道解決辦法。
錯誤訊息:
https://ithelp.ithome.com.tw/upload/images/20201216/20128458xSttfnCd33.png
想請教的是該如何將執行檔案和Bat檔案一起打包交給使用者使用呢?
或是有關鍵字可以讓我自己查詢 謝謝!

Ray iT邦新手 5 級 ‧ 2020-12-16 15:08:35 檢舉
可以提供錯誤訊息嗎~
k2lairrol iT邦新手 5 級 ‧ 2020-12-16 15:15:46 檢舉
已補上錯誤訊息,謝謝

1 個回答

0
japhenchen
iT邦大師 1 級 ‧ 2020-12-16 16:46:09
最佳解答

不要把bat放C,需要系統管理員權限才行,改成bat放在執行C#程式的所在資料裡夾執行,不用設定workingdirectory

看更多先前的回應...收起先前的回應...
k2lairrol iT邦新手 5 級 ‧ 2020-12-17 08:34:49 檢舉

目前把換了路徑還是失敗,我再試試看謝謝!

k2lairrol iT邦新手 5 級 ‧ 2020-12-17 08:36:42 檢舉

可能我描述不太好,我是在VS上產出的EXE給使用者使用,是需要連外部呼叫的檔案一起給使用者使用才不會有路徑問題嗎?

那..........你在程式裡把BAT的內容即時產生,存到執行檔所在目錄(WriteAllText)

List<string> BAT = new List<string>();
BAT.Add("@echo off");
BAT.Add("copy c:\log20201217.txt D:\log20201217.txt");
File.WriteAllText("cccc.bat",string.Join('\n',BAT));

Thread.Sleep(1000);
Process.Start("cccc.bat");

但.........為什麼要再執行BAT?為什麼不在C# Console裡搞定就好?搬檔案、複製檔案、問問題,產生日期時間字串,比對檔案.............郇做的比BATCH好且簡單,如非要做自我更新的功能,我真的不會想弄個BATCH檔來自找麻煩

k2lairrol iT邦新手 5 級 ‧ 2020-12-21 09:08:06 檢舉

我再試試看 感謝您的幫忙

我要發表回答

立即登入回答