码迷,mamicode.com
首页 > Windows程序 > 详细

C#隐式运CMD命令

时间:2015-06-09 17:30:35      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:process   c#运行cmd命令   

本文实现了C#隐式运行CMD命令的功能。下图是实例程序的主画面。在命令文本框输入DOS命令,点击“Run”按钮,在下面的文本框中输出运行结果。

技术分享

下面是程序的完整代码。本程序没有使用p.StandardOutput.ReadtoEnd()p.StandardOutput.ReadLine()方法来获得输出,因为这些方法执行后画面容易卡死。而是通过调用异步方法BeginOutputReadLine来获取输出,并在事件p.OutputDataReceived的事件处理方法中来处理结果。

using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;

 
namespace RunDosCommandForm
{
    publicpartialclassForm1 : Form
    {
        publicForm1()
        {
           InitializeComponent();
        }
 
        privatevoidbutton1_Click(object sender, EventArgse)
        {
           ExcuteDosCommand(textBox1.Text);
        }
 
        privatevoidExcuteDosCommand(string cmd)
        {
            try
            {
               Process p = newProcess();
               p.StartInfo.FileName = "cmd";
               p.StartInfo.UseShellExecute = false;
               p.StartInfo.RedirectStandardInput = true;
               p.StartInfo.RedirectStandardOutput = true;
               p.StartInfo.RedirectStandardError = true;
               p.StartInfo.CreateNoWindow = true;
               p.OutputDataReceived += newDataReceivedEventHandler(sortProcess_OutputDataReceived);
               p.Start();
               StreamWriter cmdWriter = p.StandardInput;
               p.BeginOutputReadLine();
               if (!String.IsNullOrEmpty(cmd))
               {
                   cmdWriter.WriteLine(cmd);
               }
               cmdWriter.Close();
               p.WaitForExit();
               p.Close();  
            }
            catch(Exception ex)
            {
               MessageBox.Show("执行命令失败,请检查输入的命令是否正确!");
            }
        }
 
        privatevoidsortProcess_OutputDataReceived(object sender,DataReceivedEventArgs e)
        {
            if(!String.IsNullOrEmpty(e.Data))
            {
               this.BeginInvoke(newAction(() => { this.listBox1.Items.Add(e.Data);}));                  
            }
        }
    }
}

我们还可以将需要运行的CMD命令保存为BAT文件,再使用Process类来执行。

Process p = new Process();//设定调用的程序名,不是系统目录的需要完整路径 
p.StartInfo.FileName = "cmd.bat";//传入执行参数 
p.StartInfo.Arguments = "";
p.StartInfo.UseShellExecute = false;//是否重定向标准输入 
p.StartInfo.RedirectStandardInput = false;//是否重定向标准转出 
p.StartInfo.RedirectStandardOutput = false;//是否重定向错误 
p.StartInfo.RedirectStandardError = false;//执行时是不是显示窗口 
p.StartInfo.CreateNoWindow = true;//启动 
p.Start();
p.WaitForExit();
p.Close(); 


 


 

 

C#隐式运CMD命令

标签:process   c#运行cmd命令   

原文地址:http://blog.csdn.net/yl2isoft/article/details/46426689

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!