//先读取文本中的命令假设为strCommand
string strCommand="ipconfig";
string strRst=string.Empty;
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/c " + strCommand;
p.StartInfo.UseShellExecute = false;
//重定向标准输入
//p.StartInfo.RedirectStandardInput = false;
//重定向标准输出
p.StartInfo.RedirectStandardOutput = true;
//重定向错误输出
p.StartInfo.RedirectStandardError = false;
//设置不显示窗口
p.StartInfo.CreateNoWindow = true;
try
{
//启动进程
p.Start();
//停止3秒钟
Thread.Sleep(3000);
//如果进程结束
//或者你可以等到结束再获取
if (p.HasExited)
{
//从输出流获取执行结果
strRst = p.StandardOutput.ReadToEnd();
}
else
{
p.Kill();
}
}
catch (Exception ex)
{
strRst = "";
}
finally
{
p.Close();
}
//strRst即为运行后的结果,再将他写入另一个文本
我已经实现,如下:
92.重定向windows控制台程序的输出信息
delegate void dReadLine(string strLine);
private void excuteCommand(string strFile, string args, dReadLine onReadLine)
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo();
p.StartInfo.FileName = strFile;
p.StartInfo.Arguments = args;
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.Start();
System.IO.StreamReader reader = p.StandardOutput;//截取输出流
string line = reader.ReadLine();//每次读取一行
while (!reader.EndOfStream)
{
onReadLine(line);
line = reader.ReadLine();
}
p.WaitForExit();
}
private void PrintMessage(string strLine)
{
%%2 += strLine + " ";
}
excuteCommand("cmd", " "+%%1, new dReadLine(PrintMessage));