栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#中隐式运行CMD命令行窗口的方法

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#中隐式运行CMD命令行窗口的方法

MS的CMD命令行是一种重要的操作界面,一些在C#中不那么方便完成的功能,在CMD中几个简单的命令或许就可以轻松搞定,如果能在C#中能完成CMD窗口的功能,那一定可以使我们的程序简便不少。
下面介绍一种常用的在C#程序中调用CMD.exe程序,并且不显示命令行窗口界面,来完成CMD中各种功能的简单方法。
如下所示:
复制代码 代码如下:
System.Diagnosties.Process p=new System.Diagnosties.Process();
p.StartInfo.FileName="cmd.exe";//要执行的程序名称
p.StartInfo.UseShellExecute=false;
p.StartInfo.RedirectStanderInput=true;//可能接受来自调用程序的输入信息
p.StartInfo.RedirectStanderOutput=true;//由调用程序获取输出信息
p.StartInfo.CreateNoWindow=true;//不显示程序窗口
p.Start();//启动程序
//向CMD窗口发送输入信息:
p.StanderInput.WriteLine("shutdown -r t 10"); //10秒后重启(C#中可不好做哦)
//获取CMD窗口的输出信息:
string sOutput = p.StandardOutput.ReadToEnd();有啦以下代码,就可以神不知鬼不觉的操作CMD啦。总之,Process类是一个非常有用的类,它十分方便的利用第三方的程序扩展了C#的功能。

详细源码如下:
复制代码 代码如下:
using System;
using System.Diagnostics;
namespace Business
{
///


/// Command 的摘要说明。
///

public class Command
{
private Process proc = null;
///
/// 构造方法
///

public Command()
{
proc = new Process();
}
///
/// 执行CMD语句
///

/// 要执行的CMD命令
public void RunCmd(string cmd)
{
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
proc.StandardInput.WriteLine(cmd);
proc.Close();
}
///
/// 打开软件并执行命令
///

/// 软件路径加名称(.exe文件)
/// 要执行的命令
public void RunProgram(string programName,string cmd)
{
Process proc = new Process();
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.FileName = programName;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
if (cmd.Length != 0)
{
proc.StandardInput.WriteLine(cmd);
}
proc.Close();
}
///
/// 打开软件
///

/// 软件路径加名称(.exe文件)
public void RunProgram(string programName)
{
this.RunProgram(programName,"");
}
}
}

调用时
复制代码 代码如下:
Command cmd = new Command();
cmd.RunCmd("dir");

获取输出信息应注意:

ReadtoEnd()容易卡住:

复制代码 代码如下:
[csharp] view plaincopyprint?string outStr = proc.StandardOutput.ReadtoEnd(); 

 string outStr = proc.StandardOutput.ReadtoEnd();


更倾向于使用ReadLine():

复制代码 代码如下:
[csharp] view plaincopyprint?string tmptStr = proc.StandardOutput.ReadLine(); 
         string outStr = ""; 
         while (tmptStr != "") 
         { 
             outStr += outStr; 
             tmptStr = proc.StandardOutput.ReadLine(); 
         } 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/127799.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号