我一直在查找"如何从cmd获得标准输出"我发现了一些教程,但是没有,是的NONE似乎没有用,我试图读取所有输出" cmd.exe"对我有用。
继承整个代码,向下滚动查看错误位置
public static string C(string arguments, bool b)
{
System.Diagnostics.Process process = new
System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new
System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle =
System.Diagnostics.ProcessWindowStyle.Hidden;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.UseShellExecute = false;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = arguments;
process.StartInfo = startInfo;
process.Start();
string res = "";
if (b)
{
StringBuilder q = new StringBuilder();
while (!process.HasExited)
{
q.Append(process.StandardOutput.ReadToEnd());
}
string r = q.ToString();
res = r;
}
if(res == "" || res == null)
{
return "NO-RESULT";
}
return res;
}
我收到错误的地方(System.InvalidOperationException:' StandardOut尚未重定向或流程尚未启动。')
string res = "";
StringBuilder q = new StringBuilder();
while (!process.HasExited)
{
q.Append(process.StandardOutput.ReadToEnd()); // Right here
}
string r = q.ToString();
res = r;
答案 0 :(得分:0)
您正在创建名为ProcessStartInfo
的{{1}},然后在startInfo
上设置一些属性,然后将process.StartInfo
分配给startInfo
,基本上还原您之前设置的内容。
您应该在process.StartInfo
上设置RedirectStandardOutput
,RedirectStandardInput
和UseShellExecute
:
startInfo