C# Windows窗体写入控制台

C# Windows窗体写入控制台,c#,winforms,console,C#,Winforms,Console,我只是试图打开控制台并编写一行代码,然后在写入该行后控制台保持打开状态的情况下执行它。当前,命令行打开时为空白,没有写入任何内容。有办法解决这个问题吗 Process cmd = new Process(); cmd.StartInfo.FileName = "cmd.exe"; cmd.StartInfo.UseShellExecute = false; cmd.StartInfo.RedirectStandardInput = true; cmd.StartInfo.RedirectStan

我只是试图打开控制台并编写一行代码,然后在写入该行后控制台保持打开状态的情况下执行它。当前,命令行打开时为空白,没有写入任何内容。有办法解决这个问题吗

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = false;
cmd.Start();

cmd.StandardInput.WriteLine("echo hello");
cmd.StandardInput.WriteLine("pause");
cmd.WaitForExit();

您很可能只是暂停一下:

cmd.StandardInput.WriteLine("pause");
我们应该解决它

请记住添加:

cmd.StartInfo.RedirectStandardInput = false;
如果这不起作用,那么很可能仍然是一个问题,正如微软关于CMD和输出的报道。请参阅:

这将解决此问题:

cmd.StartInfo.RedirectStandardOutput = false;
这非常适合我:

using System.Diagnostics;

 namespace ConsoleApplication1
 {
  class Program
  {
    static void Main(string[] args)
    {
        Process cmd = new Process();
        cmd.StartInfo.FileName = "cmd.exe";
        cmd.StartInfo.UseShellExecute = false;
        cmd.StartInfo.RedirectStandardInput = true;
        //cmd.StartInfo.RedirectStandardOutput = true;
        cmd.Start();

        cmd.StandardInput.WriteLine("pause");
        System.Threading.Thread.Sleep(5000);
        cmd.StandardInput.WriteLine(" ");
        cmd.StandardInput.WriteLine("dir /p");
        cmd.StandardInput.WriteLine("exit");
        cmd.WaitForExit();
    }
  }
}

命令提示符仍然为空。这不是不退出的问题。问题在于提示中没有显示或执行文本。那么,RedirectStandardOutput肯定应该为false吗?这会导致命令提示根本无法打开。看起来它可能只是快速打开和关闭。我编辑了我的原稿。你能确认你的是相同的吗?在Windows运行对话框中键入:cmd/K echo hello-它可以根据你的需要工作。现在在程序中使用Process命令行参数执行同样的操作。不需要输入/输出重定向。
        Process cmd = new Process();
        cmd.StartInfo.FileName = "cmd.exe";
        cmd.StartInfo.Arguments = "/K \"echo hello\"";
        cmd.Start();