在.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);
在.net中悄悄执行dos命令,并获取执行的结果(转)的更多相关文章
- 使用Python执行dos命令并获取输出的结果
import os import subprocess # 第一种 result1 = subprocess.check_output('dir').decode('GBK') print(resul ...
- c# 设置和取消文件夹共享及执行Dos命令
/// <summary> /// 设置文件夹共享 /// </summary> /// <param name="FolderPath">文件 ...
- appium自动化测试框架——在python脚本中执行dos命令
一般我们运行dos命令,会有两种需求,一种是需要收集执行结果,如ip.device等:一种是不需要收集结果,如杀死或开启某个服务. 对应的在python中就要封装两种方法,来分别实现这两种需求. 1. ...
- C#中执行Dos命令
//dosCommand Dos命令语句 public string Execute(string dosCommand) { ); } /// <summary> /// 执行DOS命令 ...
- 【转载】DOS 系统和 Windows 系统有什么关系?为什么windows系统下可以执行dos命令?
作者:bombless 因为不同的系统都叫 Windows ,这些系统在界面上也有一定连续性并且因此可能造成误解,所以有必要稍微梳理一下几个不同的 Windows 系统.首先是 DOS 上的一个图形界 ...
- C#执行外部程序之执行DOS命令和批处理
在项目开发中,有时候要处理一些文件,比如视频格式的转换,如果用C开发一套算法,再用C#调用,未免得不偿失!有时候调用现有的程序反而更加方便.今天就来说一下C#中如何调用外部程序,执行一些特殊任务. 这 ...
- C#执行DOS命令(CMD命令)
在c#程序中,有时会用到调用cmd命令完成一些功能,于是在网上查到了如下方法,实现了c#执行DOS命令,并返回结果. //dosCommand Dos命令语句 publ ...
- c#执行Dos命令
一个执行Dos命令的窗口程序,与各位分享. 效果图: 具体实现在代码中有详细的注释,请看代码. 实现执行CMD命令的核心代码(Cmd.cs): [csharp] using S ...
- C# 执行DOS命令和批处理
在项目开发中,有时候要处理一些文件,比如视频格式的转换,如果用C开发一套算法,再用C#调用,未免得不偿失!有时候调用现有的程序反而更加方便.今天就来说一下C#中如何调用外部程序,执行一些特殊任务. 这 ...
随机推荐
- HDU 4576
http://acm.hdu.edu.cn/showproblem.php?pid=4576 题意:给一个1-n的环,m次操作,每次操作顺时针或逆时针走w步,求最后落在[l,r]区间的概率 dp[i] ...
- HDU 4462
http://acm.hdu.edu.cn/showproblem.php?pid=4462 一道题意不清的水题 题意:给一个n*n的格子,在上面放草人,每个草人有恐惧范围,问最少选择几个草人可以覆盖 ...
- cocos2dx 搭建 android 平台 -2
1.配置Cocos2d-x for Xcode. 这一块比较简单, 可以参见其他文章. 重点:install-templates-xcode.sh 2.配置普通Android开发环境 这一块包括JDK ...
- LeetCode Unique Paths (简单DP)
题意: 给出一个m*n的矩阵,robot要从[1][1]走到[m][n],每次只能往下/右走,问有多少种走法? 思路: DP的经典问题.先将[1][1]设为1,然后两种走法就是分别用[i][j]去更新 ...
- davlik虚拟机内存管理之一——内存分配
转载自http://www.miui.com/thread-74715-1-1.html dalvik虚拟机是Google在Android平台上的Java虚拟机的实现,内存管理是dalvik虚拟机中的 ...
- Hamming Codes
1. 海明校验码检错采用的是分组交叉奇偶校验法. 将编码中的数据位分成r个校验组,组内采取奇偶校验,每组一个校验位,可构成r位检错码.r>1 全部检错码为0表示数据正常,不为零时 ...
- HttpResponse的Close和End 区别
转载自:http://blog.sina.com.cn/s/blog_702c390c0100mlhi.html 最近启用了IIS上的压缩功能,但是测试系统上某模块变得不可用了.该模块采用AJAX技术 ...
- 第一部分 python基础
1.1,参数传递:*代表元组,**代表字典 1.2 ,常用数据类型 列表 [1,2,3] 元组 (1,2,3) 不可变的list 集合 {1,2,3} 字典 {1:a, 2:c} (4)字典以关键字为 ...
- iOS字符串拆分
NSString* poStr = @"local-8009-1408082245-8.wav"; NSArray* poArr1 = [naviAddressAndPort co ...
- 网站不能访问(httperrLog【Timer_MinBytesPerSecond】【Timer_ConnectionIdle】)(转载)
在\LogFiles\HTTPERR的日志(C:\Windows\System32\LogFiles\HTTPERR)中发现了大量Timer_MinBytesPerSecond,Timer_Conne ...