c# 调用CMD窗口执行命令

  1.c# 调用CMD窗体执行命令 阻塞执行, 并在最后执行完后一次性输出执行结果

        public static string RunCmd(string cmd)
        {
            //string strInput = Console.ReadLine();
            Process p = new Process();
            //设置要启动的应用程序
            p.StartInfo.FileName = "cmd.exe";
            //是否使用操作系统shell启动
            p.StartInfo.UseShellExecute = false;
            // 接受来自调用程序的输入信息
            p.StartInfo.RedirectStandardInput = true;
            //输出信息
            p.StartInfo.RedirectStandardOutput = true;
            // 输出错误
            p.StartInfo.RedirectStandardError = true;
            //不显示程序窗口
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
            //启动程序
            p.Start();

            //向cmd窗口发送输入信息
            p.StandardInput.WriteLine(cmd + "&exit");

            p.StandardInput.AutoFlush = true;

            //获取输出信息
            string strOuput = p.StandardOutput.ReadToEnd();
            //等待程序执行完退出进程
            p.WaitForExit();
            p.Close();
            return strOuput;
            //Console.WriteLine(strOuput);
        }

  

  2. 调用CMD窗体执行命令  实时获取执行结果并输出

     public string RunCmd(string cmd)
        {
            try
            {
                //string strInput = Console.ReadLine();
                Process p = new Process();
                //设置要启动的应用程序
                p.StartInfo.FileName = "cmd.exe";
                //是否使用操作系统shell启动
                p.StartInfo.UseShellExecute = false;
                // 接受来自调用程序的输入信息
                p.StartInfo.RedirectStandardInput = true;
                //输出信息
                p.StartInfo.RedirectStandardOutput = true;
                // 输出错误
                p.StartInfo.RedirectStandardError = true;
                //不显示程序窗口
                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

                p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
                p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);
                //启用Exited事件
                p.EnableRaisingEvents = true;
                p.Exited += new EventHandler(Process_Exited);

                //启动程序
                p.Start();
                p.BeginOutputReadLine();
                p.BeginErrorReadLine();
                p.StandardInput.AutoFlush = true;
                //输入命令
                p.StandardInput.WriteLine(cmd);
                p.StandardInput.WriteLine("exit");

                //获取输出信息
                // string strOuput = p.StandardOutput.ReadToEnd();
                //等待程序执行完退出进程
                //p.WaitForExit();
                //p.Close();
                // return strOuput;
                return string.Empty;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            if (e.Data != null)
            {
                Console.WriteLine(e.Data);
            }
        }

        private void p_ErrorDataReceived(object sender, DataReceivedEventArgs e)
        {
            if (e.Data != null)
            {
                Console.WriteLine(e.Data);
            }
        }

        private void Process_Exited(object sender, EventArgs e)
        {        Console.WriteLine("命令执行完毕");      }

原文地址:https://www.cnblogs.com/applebox/p/11612457.html

时间: 2024-11-05 11:49:20

c# 调用CMD窗口执行命令的相关文章

C#程序调用cmd.exe执行命令

代码部分 using System.Diagnostics; public class CmdHelper { private static string CmdPath = @"C:\Windows\System32\cmd.exe"; /// <summary> /// 执行cmd命令 /// 多命令请使用批处理命令连接符: /// <![CDATA[ /// &:同时执行两个命令 /// |:将上一个命令的输出,作为下一个命令的输入 /// &&

【转】C#程序调用cmd.exe执行命令

代码部分 using System.Diagnostics; public class CmdHelper     {         private static string CmdPath = @"C:\Windows\System32\cmd.exe";         /// <summary>         /// 执行cmd命令         /// 多命令请使用批处理命令连接符:         /// <![CDATA[         ///

C#程序调用cmd.exe执行其他exe进程(并且含多个参数),并把进程结果返回给字符串

1.关键代码部分. using System.Diagnostics; public class CmdHelper     {         private static string CmdPath = @"C:\Windows\System32\cmd.exe";         /// <summary>         /// 执行cmd命令         /// 多命令请使用批处理命令连接符:         /// <![CDATA[        

[转]使用C#调用cmd来执行sql脚本

本文转自:https://blog.csdn.net/tvmerp/article/details/1822669 下面是使用C#调用cmd来执行osql实现脚本的执行. using System; using System.Data; using System.Collections; using System.Xml; using System.IO; using System.Text; using System.Diagnostics; namespace ZZ { public cla

cmd中执行命令提示需要提升权限

win7做的这个安全机制有点2B,哎!安全性到了,但是可用性就差了. 这里给同学们分享一个冷知识,如果你打开cmd,在里面执行命令,提示权限不足时,关闭cmd窗口,打开运行窗口,输入cmd console,回车,这样打开的cmd窗口是用超级管理员打开的,这样再运行一些命令的时候,就不会提示权限不足了. 不太明白的同学看这里: 1:win+r 2:cmd console 这里再分享一个小窍门,如果飞秋feiQ无法显示表情图片,可以在feiQ程序上面右键点击用管理员身份运行,这样feiQ就能显示图片

[转]“在CMD下面执行命令需要加上exe后缀才能执行“的解决方案

在装完Python(x,y)后,在CMD中执行 python 命令结果显示没有找到命令. Google了一下,没有找到相应的解决方案,但是竟然用Baidu到了,额..是说系统环境变量中的 PATHEXT 项没有.EXE,但是我的系统环境变量中的PATHEXT中有.EXE的啊,突然看到旁边的用户环境变量中也有PATHEXT,但是其中没有.EXE项,哈哈,添加了后再次运行命令就不用加上exe后缀了.

使用bat打开多个cmd窗口执行gulp、node

一.使用场景 使用场景:项目发布前 操作步骤: 1.执行gulp,对文件进行压缩.合并等操作: 2.在1执行完成后,对1中合并的文件如default.css进行多主题色的自动生成,在这里使用node处理. 问题:手工操作步骤繁琐 打开cmd->切换执行目录->执行gulp->关闭cmd(gulp执行后,该窗口不能再执行其他命令)->打开cmd->切换目录->执行node->关闭cmd 需求:使用.bat自动完成上述步骤 二.bat代码 1 @echo off 2

调用cmd.exe执行pdf的合并(pdftk.exe)

今天调查一个pdf文件的抽取,合并功能,用到下面这个工具(pdftk): https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ 在cmd.exe里执行的很好,但在.net环境下,用程序调用就出问题,调用代码如下: Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.Re

c#调用cmd的ping命令

private static string CmdPing(string strIp) { Process p = new Process(); p.StartInfo.FileName = "cmd.exe";//设定程序名 p.StartInfo.UseShellExecute = false; //关闭Shell的使用 p.StartInfo.RedirectStandardInput = true;//重定向标准输入 p.StartInfo.RedirectStandardOu