问题 Process.Start()从命令提示符窗口获取错误


我试图 启动命令promt进程 与args。现在我想获取有关错误的信息(如果存在)。

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

最好的问候,洛维吉


1646
2018-04-25 17:43


起源

你什么意思? - SLaks
完全模糊的问题。什么样的错误? - Nayan
这根本不是一个模糊的问题。可理解。 - cgalvao1993


答案:


其他答案都是正确的。以下是您可以使用的一些代码:

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

请注意,如果找不到该文件,则不会出现标准错误错误。你会得到一个例外。


12
2018-04-25 17:52



请注意,对ReadToEnd的调用可能永远不会终止。为避免死锁,请改用异步读取方法。在这里看到我的答案: stackoverflow.com/questions/139593/... - Mark Byers
我关注你的。并且错误中出现此错误(字符串变量)'casperjs'未被识别为内部或外部命令,\ r \ noperable程序或批处理文件。\ r \ n \ n \ n \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \包 - Unknown_Coder


你可能正在寻找 StandardError 属性


2
2018-04-25 17:45





Process.StandardError 属性

获取用于读取应用程序的错误输出的流。

这应该做你想要的。

注意

要使用StandardError,您必须设置 ProcessStartInfo.UseShellExecute 为假,你必须设置 ProcessStartInfo.RedirectStandardError 为真。否则,从StandardError流中读取会引发异常。


2
2018-04-25 17:46