c# 调用CMD窗口执行命令
2021-02-01 02:12
标签:direct proc 执行 false shel 输入 exce hand empty 1.c# 调用CMD窗体执行命令 阻塞执行, 并在最后执行完后一次性输出执行结果 2. 调用CMD窗体执行命令 实时获取执行结果并输出 c# 调用CMD窗口执行命令 标签:direct proc 执行 false shel 输入 exce hand empty 原文地址:https://www.cnblogs.com/applebox/p/11612457.html public static string RunCmd(string cmd)
{
//string strInput = Console.ReadLine();
Process p = new Process();
//设置要启动的应用程序
p.StartInfo.FileName = "cmd.exe";
//是否使用操作系统shell启动
p.StartInfo.UseShellExecute = false;
// 接受来自调用程序的输入信息
p.StartInfo.RedirectStandardInput = true;
//输出信息
p.StartInfo.RedirectStandardOutput = true;
// 输出错误
p.StartInfo.RedirectStandardError = true;
//不显示程序窗口
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
//启动程序
p.Start();
//向cmd窗口发送输入信息
p.StandardInput.WriteLine(cmd + "&exit");
p.StandardInput.AutoFlush = true;
//获取输出信息
string strOuput = p.StandardOutput.ReadToEnd();
//等待程序执行完退出进程
p.WaitForExit();
p.Close();
return strOuput;
//Console.WriteLine(strOuput);
}
public string RunCmd(string cmd)
{
try
{
//string strInput = Console.ReadLine();
Process p = new Process();
//设置要启动的应用程序
p.StartInfo.FileName = "cmd.exe";
//是否使用操作系统shell启动
p.StartInfo.UseShellExecute = false;
// 接受来自调用程序的输入信息
p.StartInfo.RedirectStandardInput = true;
//输出信息
p.StartInfo.RedirectStandardOutput = true;
// 输出错误
p.StartInfo.RedirectStandardError = true;
//不显示程序窗口
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);
//启用Exited事件
p.EnableRaisingEvents = true;
p.Exited += new EventHandler(Process_Exited);
//启动程序
p.Start();
p.BeginOutputReadLine();
p.BeginErrorReadLine();
p.StandardInput.AutoFlush = true;
//输入命令
p.StandardInput.WriteLine(cmd);
p.StandardInput.WriteLine("exit");
//获取输出信息
// string strOuput = p.StandardOutput.ReadToEnd();
//等待程序执行完退出进程
//p.WaitForExit();
//p.Close();
// return strOuput;
return string.Empty;
}
catch (Exception ex)
{
throw ex;
}
}
private void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
Console.WriteLine(e.Data);
}
}
private void p_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
Console.WriteLine(e.Data);
}
}
private void Process_Exited(object sender, EventArgs e)
{
Console.WriteLine("命令执行完毕");
}