C#执行DOS命令,返回DOS命令的输出

C#执行DOS命令,返回DOS命令的输出
项目中要定时自动给用户发邮件,于是考虑用一个系统服务来完成这项工作。开发过程中发现,系统服务不方便调试,搜索了下,有一篇帖子《 C#服务调试、正式使用两便的模板》提供了一个解决方案,发现其中的执行dos命令的类在其他程序中也很有用,特抽取出来发布在此。
using System.Diagnostics;

/// 
/// DOS命令输出类
/// 
public class CommandDo
{
    /**/
    /// 
    /// 执行DOS命令,返回DOS命令的输出
    /// 
    /// dos命令
    /// 
   
   返回输出,如果发生异常,返回空字符串
    public static string Execute(string dosCommand)
    {
        return Execute(dosCommand, 6 * 1000);
    }
    /**/
    /// 
    /// 执行DOS命令,返回DOS命令的输出
    /// 
    /// dos命令
    /// 等待命令执行的时间(单位:毫秒),如果设定为0,则无限等待
    /// 
   
   返回输出,如果发生异常,返回空字符串
    public static string Execute(string dosCommand, int milliseconds)
    {
        string output = "";     //输出字符串
        if (dosCommand != null && dosCommand != "")
        {
            Process process = new Process();     //创建进程对象
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.FileName = "cmd.exe";      //设定需要执行的命令
            startInfo.Arguments = "/C " + dosCommand;   //设定参数,其中的“/C”表示执行完命令后马上退出
            startInfo.UseShellExecute = false;     //不使用系统外壳程序启动
            startInfo.RedirectStandardInput = false;   //不重定向输入
            startInfo.RedirectStandardOutput = true;   //重定向输出
            startInfo.CreateNoWindow = true;     //不创建窗口
            process.StartInfo = startInfo;
            try
            {
                if (process.Start())       //开始进程
                {
                    if (milliseconds == 0)
                        process.WaitForExit();     //这里无限等待进程结束
                    else
                        process.WaitForExit(milliseconds);  //这里等待进程结束,等待时间为指定的毫秒
                    output = process.StandardOutput.ReadToEnd();//读取进程的输出
                }
            }
            catch
            {
            }
            finally
            {
                if (process != null)
                    process.Close();
            }
        }
        return output;
    }
}
调用方法见各个方法的注释。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值