zoukankan      html  css  js  c++  java
  • C#隐式执行CMD命令

    本文实现C#隐式执行CMD功能命令。下图是示例程序的主界面。

    在命令文本框输入DOS命令,点击“Run”button。在以下的文本框中输出执行结果。

    以下是程序的完整代码。

    本程序没有使用p.StandardOutput.ReadtoEnd()p.StandardOutput.ReadLine()方法来获得输出,由于这些方法运行后画面easy卡死。

    而是通过调用异步方法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(); 
    


     


     

     

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    CSS3圆角详解
    纯CSS绘制三角形(各种角度)
    jquery实现文字上下无缝滚动
    选择select里面某个option触发的事件
    倒计时
    移动端弹出层加遮罩后禁止滑动
    终端连接oschina 生成SSH公钥
    兼容所有的浏览器透明度代码
    背景颜色渐变效果设置
    Linux下搜索文件命令whereis/which/find/locate
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4854566.html
Copyright © 2011-2022 走看看