命令完成后获取命令提示符窗口内容

时间:2012-07-23 08:34:09

标签: c# winforms cmd

我希望在C#中完成命令后获取命令提示符窗口的内容。

具体来说,在这种情况下,我从按钮点击发出ping命令,并希望在文本框中显示输出。

我目前使用的代码是:

ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.Arguments = "ping 192.168.1.254";
Process pingIt = Process.Start(startInfo);
string errors = pingIt.StandardError.ReadToEnd();
string output = pingIt.StandardOutput.ReadToEnd();

txtLog.Text = "";
if (errors != "")
{
    txtLog.Text = errors;
}
else
{
    txtLog.Text = output;
}

它有效。它抓取至少一些输出并显示它,但是ping本身不会执行 - 或者至少这是我假设给出下面的输出并且命令提示符窗口闪烁一小段时间。

输出:

  

Microsoft Windows [Version 6.1.7601]版权所有(c)2009 Microsoft   公司。保留所有权利。

     

C:\结帐\ PingUtility \ PingUtility \ BIN \调试和GT;

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

这应该这样做

ProcessStartInfo info = new ProcessStartInfo(); 
info.Arguments = "/C ping 127.0.0.1"; 
info.WindowStyle = ProcessWindowStyle.Hidden; 
info.CreateNoWindow = true; 
info.FileName = "cmd.exe"; 
info.UseShellExecute = false; 
info.RedirectStandardOutput = true; 
using (Process process = Process.Start(info)) 
{ 
    using (StreamReader reader = process.StandardOutput) 
    { 
        string result = reader.ReadToEnd(); 
        textBox1.Text += result; 
    } 
} 

输出

enter image description here