从cmd读取输出获取错误

时间:2017-10-08 19:04:12

标签: c# cmd redirectstandardoutput

我一直在查找"如何从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;

1 个答案:

答案 0 :(得分:0)

您正在创建名为ProcessStartInfo的{​​{1}},然后在startInfo上设置一些属性,然后将process.StartInfo分配给startInfo,基本上还原您之前设置的内容。

您应该在process.StartInfo上设置RedirectStandardOutputRedirectStandardInputUseShellExecute

startInfo