如何在我的程序中包含cmd(而不仅仅是运行单个命令)

时间:2017-01-26 17:51:46

标签: c# visual-studio cmd

我在我的程序中包含了一个cmd,但是我无法使用像" cd"这样的命令。或" @echo off"因为它为每个命令启动一个新的cmd

if (e.KeyChar == (char)13)
{
    Process cmd = new Process();
    cmd.StartInfo.FileName = "cmd.exe";
    cmd.StartInfo.RedirectStandardInput = true;
    cmd.StartInfo.RedirectStandardOutput = true;
    cmd.StartInfo.CreateNoWindow = true;
    cmd.StartInfo.UseShellExecute = false;
    cmd.Start();
    cmd.StandardInput.WriteLine(textBox1.Text);
    cmd.StandardInput.Flush();
    cmd.StandardInput.Close();
    cmd.WaitForExit();

    richTextBox1.Text = cmd.StandardOutput.ReadToEnd();
}

应该是什么样的:如果您在textbox1中输入命令并按Enter键,则richtextbox1应显示输出,您可以输入下一个命令

1 个答案:

答案 0 :(得分:0)

如果你想将命令行集成到你的应用程序中,我建议你在后台启动它,然后只需输入它的输入流并读取它的输出。

这样你就可以创建一种管道。

StreamWriter writer = new StreamWriter(process.StandardInput);
StreamReader reader = new StreamReader(process.StandardOutput);

存储对这些流的引用,只需使用它:

writer.WriteLine("dir");
string line = reader.ReadLine ();

每次只运行一个命令时,此方法将比运行命令行更有效。