C# 执行DOS命令和批处理

在项目开发中,有时候要处理一些文件,比如视频格式的转换,如果用C开发一套算法,再用C#调用,未免得不偿失!有时候调用现有的程序反而更加方便。今天就来说一下C#中如何调用外部程序,执行一些特殊任务。

这里演示调用cmd.exe,即我们常用的DOS。

下面来看代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace WinShell
{
   class Program
   {
      static void Main(string[] args)
      {
         Console.WriteLine(Execute("ver",10));
         Console.Read();
      }

      /// <summary>
      /// 执行DOS命令,返回DOS命令的输出
      /// </summary>
      /// <param name="dosCommand">dos命令</param>
      /// <param name="milliseconds">等待命令执行的时间(单位:毫秒),
      /// 如果设定为0,则无限等待</param>
      /// <returns>返回DOS命令的输出</returns>
      public static string Execute(string command, int seconds)
      {
         string output = ""; //输出字符串
         if (command != null && !command.Equals(""))
         {
            Process process = new Process();//创建进程对象
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.FileName = "cmd.exe";//设定需要执行的命令
            startInfo.Arguments = "/C " + command;//“/C”表示执行完命令后马上退出
            startInfo.UseShellExecute = false;//不使用系统外壳程序启动
            startInfo.RedirectStandardInput = false;//不重定向输入
            startInfo.RedirectStandardOutput = true; //重定向输出
            startInfo.CreateNoWindow = true;//不创建窗口
            process.StartInfo = startInfo;
            try
            {
               if (process.Start())//开始进程
               {
                  if (seconds == 0)
                  {
                     process.WaitForExit();//这里无限等待进程结束
                  }
                  else
                  {
                     process.WaitForExit(seconds); //等待进程结束,等待时间为指定的毫秒
                  }
                  output = process.StandardOutput.ReadToEnd();//读取进程的输出
               }
            }
            catch(Exception ex)
            {
               Console.WriteLine(ex.Message);//捕获异常,输出异常信息
            }
            finally
            {
               if (process != null)
                  process.Close();
            }
         }
         return output;
      }
   }
}

这里调用DOS,执行查看版本的命令,然后获取执行结果,输出如下:

直接输出结果,一点也不拖泥带水,是不是感觉很好!

下面来说下,如何执行批处理程序,即bat结尾的文件,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace WinShell
{
   class Program
   {
      static void Main(string[] args)
      {
         Process pro = new Process();
         pro.StartInfo.FileName = @"d:\1.bat";
         pro.StartInfo.UseShellExecute = false;
         pro.StartInfo.RedirectStandardInput = false;
         pro.StartInfo.RedirectStandardOutput = true;
         pro.Start();
         string result = pro.StandardOutput.ReadToEnd();
         Console.WriteLine(result);

      }
   }
}

这个更加简单,直接把FileName的属性设置为批处理文件,将有Windows调用DOS执行,并且返回结果。

同理,我们可以通过DOS调用其他的很多程序。

原文地址:https://www.cnblogs.com/zhaoshujie/p/10612654.html

时间: 2024-10-06 18:52:28

C# 执行DOS命令和批处理的相关文章

c#执行Dos命令

效果图: 具体实现在代码中有详细的注释,请看代码. 实现执行CMD命令的核心代码(Cmd.cs): [csharp] using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading; using System.Management; using System.Globalization; na

C#执行DOS命令(CMD命令)

在c#程序中,有时会用到调用cmd命令完成一些功能,于是在网上查到了如下方法,实现了c#执行DOS命令,并返回结果.         //dosCommand Dos命令语句         public string Execute(string dosCommand)         {             return Execute(dosCommand, 10);         }         /// <summary>         /// 执行DOS命令,返回DOS命

在.net中悄悄执行dos命令,并获取执行的结果(转)

一.怎样使dos命令悄悄执行,而不弹出控制台窗口? 1.需要执行带“/C”参数的“cmd.exe”命令,它表示执行完命令后立即退出控制台.2.设置startInfo.UseShellExecute = false;     //不使用系统外壳程序启动进程3.设置startInfo.CreateNoWindow = true;     //不创建窗口 二.怎样得到dos命令的执行结果? 1.设置startInfo.RedirectStandardOutput = true;   //重定向输出,而

c# 设置和取消文件夹共享及执行Dos命令

/// <summary> /// 设置文件夹共享 /// </summary> /// <param name="FolderPath">文件夹路径</param> /// <param name="ShareName">共享名</param> /// <param name="Description">共享注释</param> /// <re

Delphi执行DOS命令显示到文本框

Delphi执行DOS命令显示到文本框(TMemo) 2007-11-24 22:03 procedure CmdExecAndView(FileName: string; memo: TMemo); procedure _AddInfo(mmInfo:TMemo; S: string; var line: string); var i, p: Integer; begin if mmInfo.Lines.Count > 800 then mmInfo.Lines.Clear; //去掉 \r

appium自动化测试框架——在python脚本中执行dos命令

一般我们运行dos命令,会有两种需求,一种是需要收集执行结果,如ip.device等:一种是不需要收集结果,如杀死或开启某个服务. 对应的在python中就要封装两种方法,来分别实现这两种需求. 1.引入包 import os 2.只执行不收集结果 os.system(command) 3.执行并手机结果 os.popen(command).readlines() 4.代码实现 1 #coding=utf-8 2 import os 3 4 class DosCmd: 5 ''' 6 用来封装w

Electron —— 执行DOS命令有乱码

现象 使用exec()执行DOS命令dir,结果出现乱码: 分析 代码如下: $(document).ready(() => { const exec = require('child_process').exec; // 任何你期望执行的cmd命令,ls都可以 let cmdStr = 'dir'; // 执行cmd命令的目录,如果使用cd xx && 上面的命令,这种将会无法正常退出子进程 let cmdPath = './'; // 子进程名称 let workerProces

[源码]perl执行dos命令 执行cmd命令并输出cgi页面

perl执行dos命令 执行cmd命令并输出cgi页面 2014-08-31 01:30:13| 分类: Perl |举报 |字号 订阅 #!c:/Perl/bin/perl.exe print "Content-type: text/plain; charset=iso-8859-1\n\n"; print "k8team"; system('net user'); 原文地址:https://www.cnblogs.com/k8gege/p/10585702.ht

一个执行Dos命令的窗口程序,与各位分享。

效果图: 具体实现在代码中有详细的注释,请看代码. 实现执行CMD命令的核心代码(Cmd.cs): [csharp] using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading; using System.Management; using System.Globalization; na