注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

心情挺好的博客

正在等你光临呢 呵呵

 
 
 

日志

 
 
关于我

喜欢摄影的朋友看过来:) 有时间就跟我一起去拍照去吧. QQ272751 上海圣玛丽摄影化妆培训学校 16年专业摄影培训化妆培训学校 电话:15900513500。 http://www.smlsh.com

网易考拉推荐

在.net中悄悄执行dos命令,并获取执行的结果(转)   

2009-03-20 22:45:35|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


 
本文阐述了如何在.net中悄悄的执行dos命令,并通过重定向输出来返回结果的方式。

一、怎样使dos命令悄悄执行,而不弹出控制台窗口?

1.需要执行带“/C”参数的“cmd.exe”命令,它表示执行完命令后立即退出控制台。
2.设置startInfo.UseShellExecute = false;     //不使用系统外壳程序启动进程
3.设置startInfo.CreateNoWindow = true;     //不创建窗口

二、怎样得到dos命令的执行结果?

1.设置startInfo.RedirectStandardOutput = true;   //重定向输出,而不是默认的显示在dos控制台
2.使用process.StandardOutput来读取结果。

三、源程序

我将这一系列操作都封装到了类DosCommandOutput的方法Execute中,请看下面:

using System;
using System.Text;
using System.Diagnostics;

namespace Wuya.GetDosCommandOutput
{
/// <summary>
/// DOS命令输出类
/// </summary>
class DosCommandOutput
{
  /// <summary>
  /// 执行DOS命令,返回DOS命令的输出
  /// </summary>
  /// <param name="dosCommand">dos命令</param>
  /// <returns>返回输出,如果发生异常,返回空字符串</returns>
  public static string Execute(string dosCommand)
  {
   return Execute(dosCommand, 60 * 1000);
  }
  /// <summary>
  /// 执行DOS命令,返回DOS命令的输出
  /// </summary>
  /// <param name="dosCommand">dos命令</param>
  /// <param name="milliseconds">等待命令执行的时间(单位:毫秒),如果设定为0,则无限等待</param>
  /// <returns>返回输出,如果发生异常,返回空字符串</returns>
  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;
  }
}
}

四、使用示例

txtResult.Text=DosCommandOutput.Execute(txtCommand.Text);

  评论这张
 
阅读(356)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017