我正在嘗試啓動命令提示進程 with args。現在我想獲取有關錯誤的信息(如果存在)。Process.Start()從命令提示符窗口中獲取錯誤
someProcess = System.Diagnostics.Process.Start(cmd, someArgs);
最好的問候,loviji
我正在嘗試啓動命令提示進程 with args。現在我想獲取有關錯誤的信息(如果存在)。Process.Start()從命令提示符窗口中獲取錯誤
someProcess = System.Diagnostics.Process.Start(cmd, someArgs);
最好的問候,loviji
其他答案是正確的。下面是一些代碼,你可以使用:
ProcessStartInfo startInfo = new ProcessStartInfo(cmd, args);
startInfo.UseShellExecute = false;
startInfo.RedirectStandardError = true;
Process someProcess = Process.Start(startInfo);
string errors = someProcess.StandardError.ReadToEnd();
注意,如果沒有找到文件,你不會得到在標準錯誤的錯誤。您將會得到一個異常。
請注意,對ReadToEnd的調用可能永遠不會終止。爲避免死鎖,請使用異步讀取方法。看到我的答案在這裏:http://stackoverflow.com/questions/139593/processstartinfo-hanging-on-waitforexit-why/7608823#7608823 – 2011-11-09 14:37:36
我遵循你的答案。並在錯誤中獲得了此錯誤(字符串變量) 'casperjs'不被識別爲內部或外部命令,\ r \ noperable程序或批處理文件。\ r \ n 如果存在則提供任何解決方案 – 2017-10-10 06:48:34
你可能尋找StandardError
property。
Process.StandardError
Property:
獲取用於讀取的應用程序的錯誤輸出的流。
這應該做你想做的。
注意
要使用StandardError的,你必須設置ProcessStartInfo.UseShellExecute爲false,並且必須設置ProcessStartInfo.RedirectStandardError爲true。否則,從StandardError流讀取將引發異常。
你是什麼意思? – SLaks 2010-04-25 17:45:17
完全模糊的問題。什麼樣的錯誤? – Nayan 2010-04-25 18:05:16
這根本不是一個模糊的問題。可理解。 – cgalvao1993 2014-08-19 14:13:19