使用C#挂起进程调用cmd.exe

时间:2016-07-19 22:48:23

标签: c# cmd process command redirectstandardoutput

我正在尝试从cmd.exe(测试" DIR"命令)中取出标准,并将其放入文本框中。但是,每当我启动程序时程序都会挂起(没有按下按钮)。

private void cmd_test()
{
    Process pr = new Process()
    {
        StartInfo = {
            FileName = "cmd.exe",
            UseShellExecute = true,
            CreateNoWindow = true,
            RedirectStandardOutput = true,
            RedirectStandardInput = true,
            RedirectStandardError = true,
        }
    };

    pr.Start();
    pr.StandardInput.WriteLine("DIR");
    TextBox1.Text = pr.StandardOutput.ReadToEnd();
}

我还在StartInfo块中尝试了Arguments = "DIR"而不是WriteLine。

如何正确地向cmd.exe发送命令,而不挂起?

1 个答案:

答案 0 :(得分:1)

你走了:

  using (var p = new Process())
  {
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.Arguments = "/C dir";
    p.Start();
    var output = p.StandardOutput.ReadToEnd();
    p.WaitForExit();
    richTextBox1.Text = output;
  }