ms的cmd命令行是一种重要的操作界面,一些在c#中不那么方便完成的功能,在cmd中几个简单的命令或许就可以轻松搞定,如果能在c#中能完成cmd窗口的功能,那一定可以使我们的程序简便不少。
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,"");
}
}
}
bat处理文件
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#的功能。
调用方法
command cmd = new command();
cmd.runcmd("dir");