2010-04-25 67 views
11

我正在嘗試啓動命令提示進程 with args。現在我想獲取有關錯誤的信息(如果存在)。Process.Start()從命令提示符窗口中獲取錯誤

someProcess = System.Diagnostics.Process.Start(cmd, someArgs); 

最好的問候,loviji

+0

你是什麼意思? – SLaks 2010-04-25 17:45:17

+1

完全模糊的問題。什麼樣的錯誤? – Nayan 2010-04-25 18:05:16

+1

這根本不是一個模糊的問題。可理解。 – cgalvao1993 2014-08-19 14:13:19

回答

12

其他答案是正確的。下面是一些代碼,你可以使用:

ProcessStartInfo startInfo = new ProcessStartInfo(cmd, args); 
startInfo.UseShellExecute = false; 
startInfo.RedirectStandardError = true; 
Process someProcess = Process.Start(startInfo); 
string errors = someProcess.StandardError.ReadToEnd(); 

注意,如果沒有找到文件,你不會得到在標準錯誤的錯誤。您將會得到一個異常。

+0

請注意,對ReadToEnd的調用可能永遠不會終止。爲避免死鎖,請使用異步讀取方法。看到我的答案在這裏:http://stackoverflow.com/questions/139593/processstartinfo-hanging-on-waitforexit-why/7608823#7608823 – 2011-11-09 14:37:36

+0

我遵循你的答案。並在錯誤中獲得了此錯誤(字符串變量) 'casperjs'不被識別爲內部或外部命令,\ r \ noperable程序或批處理文件。\ r \ n 如果存在則提供任何解決方案 – 2017-10-10 06:48:34