2010-04-25 115 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