获取命令行输出内容的方式有传统和异步两种方式。

传统方式:

 public static void RunExe(string exePath, string arguments, out string output, out string error)
{
using (Process process = new System.Diagnostics.Process())
{
process.StartInfo.FileName = exePath;
process.StartInfo.Arguments = arguments;
// 必须禁用操作系统外壳程序
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true; process.Start(); output = process.StandardOutput.ReadToEnd();
error = process.StandardError.ReadToEnd(); process.WaitForExit();
process.Close();
}
}
    class Program
{
static void Main(string[] args)
{
string output;
string error;
CMD.RunExe("ping", "www.baidu.com",out output,out error);
Console.WriteLine(output +"\n"+ error);
}
}

异步方式:

/// <summary>
/// 执行一条command命令
/// </summary>
/// <param name="command">需要执行的Command</param>
/// <param name="output">输出</param>
/// <param name="error">错误</param>
public static void ExecuteCommand(string command, out string output, out string error)
{
try
{
//创建一个进程
Process process = new Process();
process.StartInfo.FileName = command; // 必须禁用操作系统外壳程序
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true; //启动进程
process.Start(); //准备读出输出流和错误流
string outputData = string.Empty;
string errorData = string.Empty;
process.BeginOutputReadLine();
process.BeginErrorReadLine(); process.OutputDataReceived += (sender, e) =>
{
outputData += (e.Data + "\n");
}; process.ErrorDataReceived += (sender, e) =>
{
errorData += (e.Data + "\n");
}; //等待退出
process.WaitForExit(); //关闭进程
process.Close(); //返回流结果
output = outputData;
error = errorData;
}
catch (Exception)
{
output = null;
error = null;
}
}

最新文章

  1. [ASP.NET MVC 小牛之路]01 - 理解MVC模式
  2. Amazon EC2免费VPS防止超额被扣钱三大方法:流量 硬盘读写 运行时长
  3. 关于java多线程
  4. MySQL 启动时禁用了 InnoDB 引擎的解决方法
  5. jQuery学习备忘
  6. sjtu1590 强迫症
  7. Webstorm10.0.3破解程序及汉化包下载、Webstorm配置入门指南
  8. js获取控件位置
  9. 2.10 工具使用 after effects(图形视频处理软件)
  10. 基于51单片机IIC通信的PCF8591学习笔记
  11. OpenID Connect:OAuth 2.0协议之上的简单身份层
  12. idea jetty 配置
  13. Spring的xml解析原理分析【转载】
  14. BZOJ1014[JSOI2008]火星人——非旋转treap+二分答案+hash
  15. 乱入Linux界的我是如何学习的
  16. _itemmod_extract_enchant
  17. git merge branch
  18. Django中的ORM介绍,字段以及字段的参数。
  19. Beta阶段第1周/共2周 Scrum立会报告+燃尽图 05
  20. css 元素选择器实例

热门文章

  1. [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)
  2. Object.assign方法复制或合并对象
  3. 【跟着子迟品 underscore】如何优雅地写一个『在数组中寻找指定元素』的方法
  4. 浅谈Struts2
  5. C#程序员的春天之从零开始学习unity3D游戏开发入门教程二(创建项目及基本面板介绍)
  6. sublimetext3安装px转rem的神器
  7. [转]Hibernate延迟加载与opensessioninviewFilter
  8. 微信小程序-关于post 过来服务器没有获取到数据问题
  9. jprofiler_监控远程linux服务器的JVM进程(实践)
  10. 关于GIL