• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#动态执行批处理命令的方法

C#动态执行批处理命令的方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#动态数组,c#动态添加控件,c#动态加载dll,c#动态生成控件,c#动态数组定义等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了C#动态执行批处理命令的方法。分享给大家供大家参考。具体方法如下:

C# 动态执行一系列控制台命令,并允许实时显示出来执行结果时,可以使用下面的函数。可以达到的效果为:

持续的输入:控制台可以持续使用输入流写入后续的命令
大数据量的输出:不会因为大数据量的输出导致程序阻塞
友好的 API:直接输入需要执行的命令字符串即可

函数原型为:
/// 打开控制台执行拼接完成的批处理命令字符串
/// </summary>
/// <param name="inputAction">需要执行的命令委托方法:每次调用 <paramref name="inputAction"/> 中的参数都会执行一次</param>
private static void ExecBatCommand(Action<Action<string>> inputAction)</div>

使用示例如下:
{
    p(@"net use \\10.32.11.21\ERPProject yintai@123 /user:yt\ERPDeployer");
    // 这里连续写入的命令将依次在控制台窗口中得到体现
    p("exit 0");
});</div>
注:执行完需要的命令后,最后需要调用 exit 命令退出控制台。这样做的目的是可以持续输入命令,知道用户执行退出命令 exit 0,而且退出命令必须是最后一条命令,否则程序会发生异常。

下面是批处理执行函数源码:
/// 打开控制台执行拼接完成的批处理命令字符串
/// </summary>
/// <param name="inputAction">需要执行的命令委托方法:每次调用 <paramref name="inputAction"/> 中的参数都会执行一次</param>
private static void ExecBatCommand(Action<Action<string>> inputAction)
{
    Process pro = null;
    StreamWriter sIn = null;
    StreamReader sOut = null;
 
    try
    {
        pro = new Process();
        pro.StartInfo.FileName = "cmd.exe";
        pro.StartInfo.UseShellExecute = false;
        pro.StartInfo.CreateNoWindow = true;
        pro.StartInfo.RedirectStandardInput = true;
        pro.StartInfo.RedirectStandardOutput = true;
        pro.StartInfo.RedirectStandardError = true;
 
        pro.OutputDataReceived += (sender, e) => Console.WriteLine(e.Data);
        pro.ErrorDataReceived += (sender, e) => Console.WriteLine(e.Data);
 
        pro.Start();
        sIn = pro.StandardInput;
        sIn.AutoFlush = true;
 
        pro.BeginOutputReadLine();
        inputAction(value => sIn.WriteLine(value));
 
        pro.WaitForExit();
    }
    finally
    {
        if (pro != null && !pro.HasExited)
            pro.Kill();
 
        if (sIn != null)
            sIn.Close();
        if (sOut != null)
            sOut.Close();
        if (pro != null)
            pro.Close();
    }
}</div>

希望本文所述对大家的C#程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#编程实现动态改变配置文件信息的方法
  • C#中动态数组用法实例
  • C#动态调整数组大小的方法
  • C#动态执行批处理命令的方法
  • C#实现动态生成表格的方法
  • 使用 C# 动态编译代码和执行的代码

相关文章

  • 2017-05-28c#实现md5加密示例
  • 2017-05-28C#基础之匿名方法实例教程
  • 2017-05-28C#中设置textbox限制条件的方法
  • 2017-05-28C#多线程学习之(四)使用线程池进行多线程的自动管理
  • 2017-05-28深入C# 内存管理以及优化的方法详解
  • 2017-05-28C#入门之窗体的简单用法实例
  • 2017-05-28C# Web应用调试开启外部访问步骤解析
  • 2017-05-28深入浅析C#泛型类型
  • 2017-05-28轻松学习C#的密封类
  • 2017-05-28C#与Java的MD5简单验证(实例代码)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#中Byte[]和String之间转换的方法
    • 解析错误富文本json字符串(带双引号)的快速解决方法
    • c# Graphics使用方法(画圆写字代码)
    • c#使用process.start启动程序报错解决方法
    • c#图像截取实例
    • linq语法基础使用示例
    • C#发送HttpPost请求来调用WebService的方法
    • c# Form中的键盘响应具体实现思路
    • 浅谈Async和Await如何简化异步编程(几个实例让你彻底明白)
    • c#对象反序列化与对象序列化示例详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有