当前位置: 首页 > 编程日记 > 正文

C#程序调用cmd执行命令

酷小孩 原文 C#程序调用cmd执行命令

对于C#通过程序来调用cmd命令的操作,网上有很多类似的文章,但很多都不行,竟是漫天的拷贝。我自己测试整理了一下。

代码:

复制代码
string str = Console.ReadLine();System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;    //是否使用操作系统shell启动
p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
p.StartInfo.CreateNoWindow = true;//不显示程序窗口
p.Start();//启动程序//向cmd窗口发送输入信息
p.StandardInput.WriteLine(str + "&exit");p.StandardInput.AutoFlush = true;
//p.StandardInput.WriteLine("exit");
//向标准输入写入要执行的命令。这里使用&是批处理命令的符号,表示前面一个命令不管是否执行成功都执行后面(exit)命令,如果不执行exit命令,后面调用ReadToEnd()方法会假死
//同类的符号还有&&和||前者表示必须前一个命令执行成功才会执行后面的命令,后者表示必须前一个命令执行失败才会执行后面的命令//获取cmd窗口的输出信息
string output = p.StandardOutput.ReadToEnd();
//StreamReader reader = p.StandardOutput; //string line=reader.ReadLine(); //while (!reader.EndOfStream) //{ // str += line + " "; // line = reader.ReadLine(); //}

p.WaitForExit();//等待程序执行完退出进程 p.Close();Console.WriteLine(output);
复制代码

程序运行结果:

需要提醒注意的一个地方就是:在前面的命令执行完成后,要加exit命令,否则后面调用ReadtoEnd()命令会假死。

我在之前测试的时候没有加exit命令,输入其他命令后窗口就假死了,也没有输出内容。

对于执行cmd命令时如何以管理员身份运行,可以看我上一篇文章: C#如何以管理员身份运行程序 - 酷小孩 - 博客园

2014-7-28 新增:

另一种C#调用cmd命令的方法,不过这种方法在执行时会“闪一下” 黑窗口,各位在使用时可以按喜好来调用。

复制代码
/// <summary>
/// 运行cmd命令
/// 会显示命令窗口
/// </summary>
/// <param name="cmdExe">指定应用程序的完整路径</param>
/// <param name="cmdStr">执行命令行参数</param>
static bool RunCmd(string cmdExe, string cmdStr)
{bool result = false;try{
  using (Process myPro = new Process()){//指定启动进程是调用的应用程序和命令行参数ProcessStartInfo psi = new ProcessStartInfo(cmdExe, cmdStr);myPro.StartInfo = psi;myPro.Start();myPro.WaitForExit();result = true;}}catch{}return result; }/// <summary> /// 运行cmd命令 /// 不显示命令窗口 /// </summary> /// <param name="cmdExe">指定应用程序的完整路径</param> /// <param name="cmdStr">执行命令行参数</param> static bool RunCmd2(string cmdExe, string cmdStr) {bool result = false;try{using (Process myPro = new Process()){myPro.StartInfo.FileName = "cmd.exe";myPro.StartInfo.UseShellExecute = false;myPro.StartInfo.RedirectStandardInput = true;myPro.StartInfo.RedirectStandardOutput = true;myPro.StartInfo.RedirectStandardError = true;myPro.StartInfo.CreateNoWindow = true;myPro.Start();//如果调用程序路径中有空格时,cmd命令执行失败,可以用双引号括起来 ,在这里两个引号表示一个引号(转义)string str = string.Format(@"""{0}"" {1} {2}", cmdExe, cmdStr, "&exit");myPro.StandardInput.WriteLine(str);myPro.StandardInput.AutoFlush = true;myPro.WaitForExit();result = true;}}catch{}return result; }
复制代码

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。






本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6042987.html,如需转载请自行联系原作者

相关文章:

Java虚拟机的内存空间有几种

Java虚拟机的内存空间有几种&#xff1f;(1)问题分析&#xff1a; JVM(虚拟机)的内存划分 不同的数据使用的是哪一块内存空间 (2)核心答案讲解&#xff1a; Java虚拟机有那几块内存空间&#xff1a; 1)栈内存&#xff1a;方法运行时所进入的内存&#xff0c;里面还会存储程序的…

技术图文:排序技术在求解算法题中的应用

背景 前段时间&#xff0c;在知识星球立了一个Flag&#xff0c;这是总结Leetcode刷题的第五篇图文。 理论部分 C# 中的排序 对集合类的排序&#xff0c;我们通常使用位于 System.Core 程序集&#xff0c;System.Linq命名空间下&#xff0c;Enumerable静态类中的扩展方法。 …

如果有电脑——计算机达人成长之路(36)

5、电脑情缘&#xff08;一&#xff09;王新华的电脑 现在的大学生一般都有一个工具&#xff0c;就是计算机&#xff0c;尤其是计算机科学系的学生&#xff0c;几乎人手一台。对此&#xff0c;木鸿飞只能深深的说上一句&#xff1a;“幸福啊&#xff01;” 现在人可能不能了解这…

Javascript中二进制数据处理方法

Javascript中二进制数据处理方法 转载于:https://www.cnblogs.com/motadou/archive/2012/02/19/2358514.html

正规Java培训机构是什么样的

​ 正规Java培训机构是什么样的?这对于很多想真正学习到java技术的人来说是非常重要的&#xff0c;选择一个适合自己的靠谱的Java培训机构&#xff0c;学有所成工作也是比较稳定的&#xff0c;下面我们来看看详细的介绍。 ​  正规Java培训机构是什么样的?其实对于这个问题…

《40期》 我们要把世纪末日变成重生日

2012年&#xff0e;传说中一个会是世纪末日的一年。&#xff08;ps&#xff1a;电影看多了……- _-!!!&#xff09;&#xff0c;但是寒假过后的北京。天气却是十分的晴朗、出奇的好。而就在今天也就是2012年2月9日40期的开班典礼就选了这一天。地点就是在育荣教学园区2栋教学楼…

LeetCode刷题宝典 V1.0 PDF下载

前段时间&#xff0c;在知识星球立了一个Flag&#xff0c;现在 Flag 的进度为 100%&#xff0c;很是开心。 为了大家学习的方便&#xff0c;所以整理了这份150多页的小册子。可以作为学习数据结构与算法或备考计算机类研究生的参考资料&#xff0c;希望对大家有所帮助。 小册子…

机器学习:信用风险评估评分卡建模方法及原理

#课程介绍 信用风险评分卡为信用风险管理提供了一种有效的、经验性的解决方法&#xff0c;是消费信贷管理中广泛应用的技术手段。 评分卡是信用风险评估领域常见的建模方法。评分卡并不加单对应于某一种机器学习算法&#xff0c;而是一种通用的建模框架&#xff0c;讲原始数据通…

0基础学怎么学习python

​ Python相对于其他编程语言来说是比较简单的&#xff0c;非常适合零基础的小白学习&#xff0c;想要进入到互联网行业&#xff0c;可以优先选择学习Python&#xff0c;那么下面小编就来为大家详细的介绍一下0基础学怎么学习python? ​  0基础学怎么学习python? 1、要读书…

nginx技术(2)nginx的配置详解

nginx的配置 1&#xff0c;启动nginx 1234567[rootcentos6 nginx-1.2.9]# /usr/sbin/nginx -c /etc/nginx/nginx.conf 启动nginx [rootcentos6 nginx-1.2.9]# ps -ef|grep nginx 查看进程 root 5479 1 0 04:15 ? 00:00:00 nginx: master process /usr/sbin/nginx -…

javascript 基础篇2 数据类型,语句,函数

文章里如果有错误的话&#xff0c;希望能帮忙指正~我也是边看视频边学习中&#xff0c;这个算是个笔记吧~自认为总结出来的东西比看视频要节省点时间~能帮到别人最好了~帮不到也起码恩能帮到我自己 嘿~ 写内容之前废话一句&#xff1a;因为旧版有些浏览器不支持javascript脚本&…

技术图文:如何在Python中定义二维数组?

背景 前几天&#xff0c;有位同学问我如下的问题&#xff1a; “temp[0][0]修改后&#xff0c;为什么temp[1][0]、temp[2][0]也发生了变化&#xff1f;” “在Python中二维数组是怎样定义和使用的&#xff1f;” 今天就来谈谈这个问题。 技术分析 在 C# 语言中有直接定义二…

javascript的垃圾回收机制指的是什么

定义&#xff1a;指一块被分配的内存既不能使用&#xff0c;又不能回收&#xff0c;直到浏览器进程结束。 像 C 这样的编程语言&#xff0c;具有低级内存管理原语&#xff0c;如 malloc()和 free()。开发人员使用这些原语显式地对操作系统的内存进行分配和释放。 而 JavaScript…

技术图文:Matlab向量 VS. Python列表

背景 前段时间在知识星球上立了一个Flag&#xff0c;至少写10篇关于 Python&#xff0c;Matlab 和 C# 对比的总结。这是第 1 篇&#xff0c;从创建结构、添加元素、删除元素、获取元素四个角度来对比 Matlab 的向量与 Python 的列表。 1. 向量/列表 的创建 1.1 直接法 Matla…

我的ExtJS学习之路 ——4

项目基本架子出来&#xff0c;然后就该考虑将封装好的gridpanel 和 tabpanel关联起来 既 点击树的叶子节点&#xff0c;将 gridpanel 展现在 tabpanel中 怎么关联呢&#xff1f; 【在之前的基础上的&#xff0c;重复的代码就不贴出来了】 我改变了 模拟数据的形式&#xff0c;注…

php CI框架输出空行问题排查

今天在使用 curl 命令行工具调试一个功能时&#xff0c;发现输出的内容总是会在最开始莫名其妙的多一行空行&#xff1a; 项目框架是 php 的 CodeIgniter&#xff0c;感觉这种问题在网上不好查找&#xff0c;因为可以确定这个是业务出现的问题&#xff0c;然后只能自己去定位查…

哪些人适合学习软件测试

软件测试相对于其他编程语言来说&#xff0c;它的入门门槛是相对比较低的&#xff0c;想要从事IT互联网行业可以选择学习软件测试&#xff0c;那么都有哪些人适合学习软件测试呢?来看看下面的详细介绍吧。 哪些人适合学习软件测试?就在软件测试培训行业观察来看&#xff0c;小…

c语言基本函数

一.内存操作函数&#xff1a; &#xff08;1&#xff09; 头文件&#xff1a;#include <string.h>memset() 函数用来将指定内存的前n个字节设置为特定的值&#xff0c;其原型为&#xff1a; void * memset( void * ptr, int value, size_t num );参数说明&#xff1a;…

技术图文:Python 匿名函数 VS. C# Lambda表达式

背景 前段时间在知识星球上立了一个Flag&#xff0c;至少写10篇关于 Python&#xff0c;Matlab 和 C# 对比的总结。 这是第 2 篇&#xff0c;从定义和应用两个角度来对比 Python 的匿名函数 与 C# 的Lambda表达式。 匿名函数/Lambda表达式的定义 Python 匿名函数 在 Python…

php是否区分大小写

按常理来说&#xff0c;大多数语言都是区分大小写的&#xff0c;比如变量 ab 和 AB 是不同的&#xff0c;函数cd 和 CD 也是不同的&#xff0c;但是php有点特别。 首先&#xff0c;php中的变量和常量是区分大小写的。 <?php$a a; $A A; echo $a; echo $A;?>这里打印了…

如何创建和获取正则对象?

在JavaSript应用中&#xff0c;使用正则表达式之前&#xff0c;需要创建正则对象。创建正则表达式的方式有两种&#xff0c;一种是用字面量方式创建&#xff0c;另种是通过RegExp0构造函数的方式创建。这两种方式的语法格式如下。 //字面量方式 var变量名/表达式/; // RegExp构…

Numpy入门教程:01. 数组的创建与属性

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

深入浅出WPF——x:Class详解

小序&#xff1a;按照惯例&#xff0c;我会在年末的最后一篇文章里感谢所有帮助过我的人们。今年也不例外&#xff0c;只是形式简单一些。祝所有帮助过我的朋友、同事、学生和兄弟姐妹们——2009年身体健康、平安快乐、财源滚滚。愿2009年的中国&#xff0c;平安祥和、远离各种…

SQL Date 函数

MySQL Date 函数 函数描述NOW()返回当前的日期和时间CURDATE()返回当前的日期CURTIME()返回当前的时间DATE()提取日期或日期/时间表达式的日期部分EXTRACT()返回日期/时间按的单独部分DATE_ADD()给日期添加指定的时间间隔DATE_SUB()从日期减去指定的时间间隔DATEDIFF()返回两个…

什么是java常量

相信很多在学java技术的同学&#xff0c;对java常量这个并不陌生&#xff0c;什么是java常量呢?java常量就是在程序中固定不变的值&#xff0c;是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。在Java中&#xff0c;常量包括整型常量、浮点数常量、布尔常量、字符常量等…

Numpy入门教程:02. 索引、切片与迭代

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

php中OR与|| AND与的区别

本身没有区别&#xff0c;习惯问题 &#xff0c;但是有时候牵涉到运算符优先级的问题&#xff0c;结果会不同&#xff0c;记录下。例如&#xff1a;$p 6 or 0;var_dump($p);//int(6)$p 6 || 0;var_dump($p);//bool(true)$p 6 and 0;var_dump($p); //int(6) $p 6 &&…

beego数据输出

概览直接输出字符串模板数据输出 静态模板数据输出动态模板数据输出json格式数据输出xml格式数据输出jsonp调用概览 直接输出字符串 通过beego.Controller.Ctx.WriteString()方法可以直接向http response body中输出字符串 beego中的函数定义如下&#xff1a; // WriteString W…

缓存和web缓存分别是什么?

什么是缓存? 缓存(cache)&#xff0c;原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器&#xff0c;通常它不像系统主存那样使用DRAM技术&#xff0c;而使用昂贵但较快速的SRAM技术。缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。 什么是web缓存…

【Python】12、字典的实现

一、字典的实现 dic 可以使用list来实现 i&#xff08;索引&#xff09; hash(key) % solt(槽位数) 此时i重复了怎么办&#xff08;hash冲突&#xff09;&#xff1f; 1、拉链法 每个槽位上拉一个List&#xff0c;就是拉链法 1234567891011121314151617181920212223242526272…