2012-07-23 174 views
2

我期待在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 [版本6.1.7601]版權所有(C)2009年微軟 公司。版權所有。

C:\結帳\ PingUtility \ PingUtility \ BIN \調試>

任何援助不勝感激。

回答

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

+0

啊,本來是完美的!我至少有點正確。謝謝! – LiamGu 2012-07-23 08:48:19