`
zu14
  • 浏览: 460026 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

.Net ( C# ) 调用控制台程序并取得输出结果

阅读更多

.Net本身的功能虽然很强,但是,有些时候,控制台、命令行的功用还是不可忽视的,恰当的使用命令行,可以起到事半功倍的效果

这里要说的是以 .net 的程序为宿主,调用 命令行程序,执行某些操作,并将命令行的输出结果返回到 .net 宿主里。我们说的控制台程序,并不是单纯的指cmd.exe/command.exe,而是泛指具有标准输入、输出功能的程序。因为通常的控制台程序,多数是在 cmd 命令行界面里执行的,所以,我们以cmd为例子来说

大家在cmd命令行里,敲入 help?,可以看到如下输出:(以XP为例,其他操作系统差别不大)

ASSOC    显示或修改文件扩展名关联。
AT       计划在计算机上运行的命令和程序。
ATTRIB   显示或更改文件属性。
BREAK    设置或清除扩展式 CTRL+C 检查。
CACLS    显示或修改文件的访问控制列表(ACLs)。
CALL     从另一个批处理程序调用这一个。
CD       显示当前目录的名称或将其更改。
CHCP     显示或设置活动代码页数。
CHDIR    显示当前目录的名称或将其更改。
CHKDSK   检查磁盘并显示状态报告。
CHKNTFS  显示或修改启动时间磁盘检查。
CLS      清除屏幕。
CMD      打开另一个 Windows 命令解释程序窗口。
COLOR    设置默认控制台前景和背景颜色。
COMP     比较两个或两套文件的内容。
COMPACT  显示或更改 NTFS 分区上文件的压缩。
CONVERT  将 FAT 卷转换成 NTFS。您不能转换当前驱动器。
COPY     将至少一个文件复制到另一个位置。
DATE     显示或设置日期。
DEL      删除至少一个文件。
DIR      显示一个目录中的文件和子目录。
DISKCOMP 比较两个软盘的内容。
DISKCOPY 将一个软盘的内容复制到另一个软盘。
DOSKEY   编辑命令行、调用 Windows 命令并创建宏。
ECHO     显示消息,或将命令回显打开或关上。
ENDLOCAL 结束批文件中环境更改的本地化。
ERASE    删除至少一个文件。
EXIT     退出 CMD.EXE 程序(命令解释程序)。
FC       比较两个或两套文件,并显示不同处。
FIND     在文件中搜索文字字符串。
FINDSTR  在文件中搜索字符串。
FOR      为一套文件中的每个文件运行一个指定的命令。
FORMAT   格式化磁盘,以便跟 Windows 使用。
FTYPE    显示或修改用于文件扩展名关联的文件类型。
GOTO     将 Windows 命令解释程序指向批处理程序中某个标明的行。
GRAFTABL 启用 Windows 来以图像模式显示扩展字符集。
HELP     提供 Windows 命令的帮助信息。
IF       执行批处理程序中的条件性处理。
LABEL    创建、更改或删除磁盘的卷标。
MD       创建目录。
MKDIR    创建目录。
MODE     配置系统设备。
MORE     一次显示一个结果屏幕。
MOVE     将文件从一个目录移到另一个目录。
PATH     显示或设置可执行文件的搜索路径。
PAUSE    暂停批文件的处理并显示消息。
POPD     还原 PUSHD 保存的当前目录的上一个值。
PRINT    打印文本文件。
PROMPT   更改 Windows 命令提示符。
PUSHD    保存当前目录,然后对其进行更改。
RD       删除目录。
RECOVER  从有问题的磁盘恢复可读信息。
REM      记录批文件或 CONFIG.SYS 中的注释。
REN      重命名文件。
RENAME   重命名文件。
REPLACE  替换文件。
RMDIR    删除目录。
SET      显示、设置或删除 Windows 环境变量。
SETLOCAL 开始批文件中环境更改的本地化。
SHIFT    更换批文件中可替换参数的位置。
SORT     对输入进行分类。
START    启动另一个窗口来运行指定的程序或命令。
SUBST    将路径跟一个驱动器号关联。
TIME     显示或设置系统时间。
TITLE    设置 CMD.EXE 会话的窗口标题。
TREE     以图形模式显示驱动器或路径的目录结构。
TYPE     显示文本文件的内容。
VER      显示 Windows 版本。
VERIFY   告诉 Windows 是否验证文件是否已正确写入磁盘。
VOL      显示磁盘卷标和序列号。
XCOPY    复制文件和目录树。

通过上面的列表,大家可以看到,很多复杂的功能,用命令行完成是非常easy了(上面列出的并不是全部命令,只是部分)


下面,我们举个例子,比如: 取得当前的系统信息,那么我只需要调用 systeminfo 即可

 

            //实例化一个进程类
            Process cmd = new Process();
            
            //获得系统信息,使用的是 systeminfo.exe 这个控制台程序
            cmd.StartInfo.FileName = "systeminfo.exe";

            //将cmd的标准输入和输出全部重定向到.NET的程序里

            cmd.StartInfo.UseShellExecute = false; //此处必须为false否则引发异常

            cmd.StartInfo.RedirectStandardInput = true; //标准输入
            cmd.StartInfo.RedirectStandardOutput = true; //标准输出

            //不显示命令行窗口界面
            cmd.StartInfo.CreateNoWindow = true;
           cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

           cmd.Start(); //启动进程

            //获取输出
            //需要说明的:此处是指明开始获取,要获取的内容,
            //只有等进程退出后才能真正拿到
            this.textBox1.Text = cmd.StandardOutput.ReadToEnd();

           cmd.WaitForExit();//等待控制台程序执行完成
            cmd.Close();//关闭该进程

原文地址:http://www.zu14.cn/2009/01/02/dotnet-command-redirect-output/
分享到:
评论

相关推荐

    .net c#控制台拆红包小程序

    .NET C# 控制台拆红包小程序是一个非常适合初学者练习编程逻辑和C#语法的项目。这个小程序模拟了现实生活中常见的红包发放与领取的过程,让用户在命令行界面中体验拆红包的乐趣。下面将详细介绍该程序涉及的主要知识...

    c# .net中控制台应用

    在C# .NET中,控制台应用程序是一种简单但强大的编程入口点,尤其适合初学者学习。C#语言是Microsoft开发的一种面向对象的编程语言,它以其简洁、高效和丰富的库支持而闻名。在这个主题中,我们将深入探讨如何使用C#...

    C# 在控制台程序中调用influxdb

    C# 在控制台程序中调用influxdb,C# 是4.7.2,influxdb是1.7详细步骤在:https://blog.csdn.net/weixin_62604823/article/details/129174326?spm=1001.2014.3001.5501

    asp.net c# 调用百度API实现在线翻译,英文转中文 中文转英文

    在本文中,我们将深入探讨如何使用ASP.NET C#调用百度API来实现在线翻译功能,包括英文转中文和中文转英文。首先,我们需要了解百度翻译API的基础知识,然后逐步解析如何在VS2010环境下编写命令行程序来实现这个功能...

    C#定时操作控制台应用程序

    本文将深入探讨如何使用C#构建一个定时操作的控制台应用程序,这在自动化任务执行、数据同步或者定期备份等场景中非常有用。 首先,我们需要了解C#中的定时器组件。在.NET框架中,有两个主要的定时器类:`System....

    C#控制台应用使用Log4net日志

    在.NET开发环境中,日志记录是一项非常重要的任务,它能够帮助开发者追踪程序运行时的状态,定位和解决问题。本文将深入探讨如何在C#控制台应用程序中使用Log4net这一流行的日志框架。Log4net是Apache软件基金会的一...

    C#调用PowerShell

    `pipeline.Invoke()`执行命令并返回结果,这些结果通常存储在`PSObject`类型的集合中。 如果你需要执行更复杂的PowerShell脚本,可以通过添加`ScriptBlock`到命令中来实现: ```csharp Command scriptCmd = new ...

    .net生成和解析二维码及调用摄像头识别二维码源码2019

    在.NET框架中,生成和解析二维码以及调用摄像头识别二维码是一项常见的任务,特别是在移动应用、物联网设备交互或者数据传输等领域。本项目以2019年为背景,使用C#编程语言实现,提供了完整的源码,帮助开发者快速...

    .net生成和解析二维码及调用摄像头识别二维码源码(完整)

    在.NET框架中,生成和解析二维码以及调用摄像头识别二维码是一项常见的任务,特别是在移动应用、物联网设备和数据交换场景中。本文将详细讲解如何利用C#语言实现这些功能。 首先,我们要了解二维码(Quick Response...

    asp.net c# 调用百度pai实现在线翻译,英文转中文

    总之,利用ASP.NET C#调用百度Pai实现在线翻译,需要理解HTTP请求、JSON序列化、API认证机制以及错误处理等概念。通过这些技术,你可以轻松地将英文文本转换为中文,为你的应用添加多语言支持。

    C#调用本地摄像头进行二维码扫描

    在C#编程环境中,开发一个应用来调用本地摄像头进行二维码扫描是一项常见的需求。这个过程涉及到几个关键的技术点,包括如何使用ZXing.Net库进行二维码解码,以及如何利用AForge.NET库来控制摄像头捕获图像。下面...

    .net生成和解析二维码及调用摄像头识别二维码源码(测试可用)

    本文将详细介绍如何使用C#实现这些功能,并提供相关源码供测试验证。 首先,生成二维码的过程通常涉及到库的使用,如开源的ZXing.Net(Zebra Crossing for .NET)库。ZXing.Net提供了QRCodeWriter类,用于生成...

    在.NET Core控制台程序中如何使用依赖注入详解

    通过这种方式,控制台程序可以利用.NET Core的依赖注入功能,使得代码更易于测试和维护。当需要更换或扩展服务实现时,只需更新服务注册,而无需修改调用这些服务的代码。此外,依赖注入还有助于促进代码的解耦,...

    C#调用摄像头(AForge)实现扫描条码解析(Zxing)功能

    C#调用摄像头(AForge)实现扫描条码解析(Zxing),解析之后会关闭摄像头并在文本框中显示条码信息,DLL源码中内含有,下载可以直接使用。 介绍: 自动识别:点击Start按钮会调用PC摄像头,代码内置Timer,会每100...

    使用.NET Client调用Web API

    用户在Visual Studio中创建新的项目,并选择控制台应用程序作为项目模板。随后,需要在项目中安装NuGet包管理器,这是.NET平台的包管理工具,用于在项目中安装、卸载和更新依赖库。安装NuGet之后,通过NuGet包管理器...

    vb.net调用模块和短信接口实例

    ### VB.NET 调用模块和短信接口实例详解 ...此外,还介绍了如何处理HTTP响应,并将结果输出到控制台。通过这种方式,可以轻松地将短信发送功能集成到各种应用程序中,从而实现用户验证、提醒等功能。

    asp.net调用类

    在ASP.NET页面或者控制台应用程序中,可以使用`new`关键字来实例化一个类: ```csharp Person person = new Person(); person.Name = "John Doe"; person.Speak(); // 输出 "Hello, I'm John Doe" ``` 三、静态类...

    C# 发送邮件 控制台程序

    总结,创建一个C#控制台程序发送邮件的步骤包括: 1. 引用必要的命名空间。 2. 创建并配置`MailMessage`对象。 3. 初始化`SmtpClient`,设置SMTP服务器信息。 4. 调用`Send`方法发送邮件。 实际开发中,可能还需要...

    C#调用Lucene.net搜索txt文档和控制台输入

    用户在控制台输入关键词后,程序会解析这个查询,然后在索引中搜索匹配的文档,并打印出搜索结果。 以上就是使用C#和Lucene.NET实现txt文档搜索的基本步骤。在实际应用中,可能还需要考虑更多因素,如错误处理、...

    c#调用ocx控件的方法

    ### C#调用OCX控件的方法 在C#中调用OCX控件是一种常见的技术,尤其是在需要利用已有组件功能的时候。本文将详细介绍如何在C#中注册、导入并使用OCX控件。 #### 一、注册OCX控件 在使用OCX控件之前,首先需要将其...

Global site tag (gtag.js) - Google Analytics