2011-03-23 185 views
0

我有以下代碼:啓動一個批處理文件

String Antcbatchpath = @"C:\GUI\antc.bat"; 

System.Diagnostics.Process runantc = new System.Diagnostics.Process(); 
runantc.StartInfo.FileName = Antcbatchpath; 
runantc.StartInfo.UseShellExecute = false; 
runantc.StartInfo.RedirectStandardOutput = true; 
runantc.StartInfo.RedirectStandardError = true; 
runantc.Start(); 

請問這種負荷C:\GUI\antc.bat批處理文件?

runantc.StartInfo.FileName僅適用於根目錄?根目錄是其中應用程序位於

EDIT 1:

喜代替@ 「C:\ GUI \ antc.bat」 我有一個路徑:

String Antcbatchpath [email protected]"C:\GUI Lab Tools\Build Machine\antc.bat"; 

其基本上包含空格。它會影響runantc.StartInfo.Filename = Antcbatchpath;

+1

可能的重複[如何使用ProcessStartInfo運行批處理文件?](http://stackoverflow.com/questions/2382683/how-do-i-use-processstartinfo-to-run-a-batch-文件) – 2011-03-23 08:18:34

+0

不回答你的問題,但只是FYI有一些批處理運行信息在另一個[堆棧溢出答案](http://stackoverflow.com/questions/1096591/how-to-hide-cmd-window-while-運行-A-批處理文件/ 1096626#1096626)。 – 2011-03-23 08:38:18

+0

請參閱編輯謝謝 – jeremychan 2011-03-24 03:05:10

回答

5

UseShellExecute = true應該這樣做。

另外,如果需要重定向,使用:

runantc.StartInfo.FileName = "CMD.EXE"; 
runantc.StartInfo.Arguments = "/C " + Antcbatchpath; 
+0

嗨erik我需要指示它爲錯誤和輸出寫一個文本文件。我仍然可以將useshellexecute設置爲true嗎? – jeremychan 2011-03-23 08:15:14

+0

嗨什麼是「/ C」? – jeremychan 2011-03-23 08:23:10

+0

告訴CMD在執行批處理文件後關閉。您可以使用/ K來執行批處理文件,但之後不能退出CMD,但您需要傳遞/ C或/ K來執行批處理文件。 – Erik 2011-03-23 08:23:33

0

你可以嘗試設置WorkingDirectory,以防止任何歧義,但以我的經驗,這是沒有必要的。

您遇到的問題是因爲antc.bat不是可執行文件。它需要UseShellExecute爲真,但這會阻止您重定向輸出。我想你將不得不選擇其中之一。

相關問題