LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 调用执行命令行窗口 (CMD)

admin
2024年9月10日 21:42 本文热度 480

摘要


在C#中,有时需要执行命令行指令来完成特定的任务,这个用起来特别简单,用好了灵活性极大。这可能包括运行脚本、管理服务、获取系统信息等。C# 提供了 System.Diagnostics 命名空间中的 Process 类来启动和管理系统进程,包括命令行窗口(cmd.exe)。

正文


应用场景

  1. 自动化构建和部署:使用命令行工具如 MSBuild 或者 PowerShell 脚本来编译和部署应用程序。

  2. 系统管理:执行系统管理任务,如启动或停止服务,管理文件和目录等。

  3. 网络操作:运行网络诊断工具如 ping、ipconfig 或自定义网络操作脚本。

  4. 数据库操作:执行数据库备份、还原或运行 SQL 脚本。

  5. 第三方工具集成:调用 Git、Docker 或其他命令行工具进行自动化操作。

示例 1: 执行简单命令

public class CmdExample{      public static void ExecuteCommand(string command)      {            ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd", $"/c {command}")            {                  RedirectStandardOutput = true,                  UseShellExecute = false,                  CreateNoWindow = true            };
using (Process process = Process.Start(processStartInfo)) { using (StreamReader reader = process.StandardOutput) { string result = reader.ReadToEnd(); Console.WriteLine(result); } } }}

使用此方法可以执行任何简单的命令行指令。例如,获取当前目录下的文件列表:

static void Main(){      CmdExample.ExecuteCommand("dir");}

示例 2: 运行批处理脚本

public class BatchScriptRunner{      public static void RunBatchScript(string scriptPath)      {            ProcessStartInfo processStartInfo = new ProcessStartInfo(scriptPath)            {                  RedirectStandardOutput = true,                  UseShellExecute = false,                  CreateNoWindow = true            };
using (Process process = Process.Start(processStartInfo)) { using (StreamReader reader = process.StandardOutput) { string result = reader.ReadToEnd(); Console.WriteLine(result); } } }}

调用批处理脚本 a.bat

static void Main(){      BatchScriptRunner.RunBatchScript(@"d:\a.bat");}

示例 3: 执行具有复杂输出的命令

public class ComplexCommandExecutor{      public static void ExecuteComplexCommand(string command)      {            ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd", $"/c {command}")            {                  RedirectStandardOutput = true,                  RedirectStandardError = true,                  UseShellExecute = false,                  CreateNoWindow = true            };
StringBuilder output = new StringBuilder(); StringBuilder error = new StringBuilder();
using (Process process = new Process()) { process.StartInfo = processStartInfo; process.OutputDataReceived += (sender, args) => output.AppendLine(args.Data); process.ErrorDataReceived += (sender, args) => error.AppendLine(args.Data);
process.Start();
process.BeginOutputReadLine(); process.BeginErrorReadLine();
process.WaitForExit();
Console.WriteLine("Output:"); Console.WriteLine(output.ToString()); Console.WriteLine("Error:"); Console.WriteLine(error.ToString()); } }}
static void Main(){ ComplexCommandExecutor.ExecuteComplexCommand("ipconfig /all");}

结论

在C#中调用执行命令行窗口可以非常灵活和强大,但也需要注意安全性和错误处理。始终验证外部输入,避免注入攻击,并确保处理任何可能的异常和错误输出。正确使用时,它可以是自动化和系统集成的强大工具。


该文章在 2024/9/13 9:21:43 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved