【C#】如何在窗体程序中调用多行CMD命令

【背景】

用VS写一个C#窗体程序,第一步需要用CMD启动一个外部服务并发送信息给该服务器,涉及两步命令,第一步是启动服务,第二步是发送信息。

【分析】

要点:

  1. 如何指定启动CMD的路径在服务exe所在路径下;
  2. 如何用C#执行CMD命令;
  3. 如何执行多条CMD命令;

【实现】

  1. 通过设置WorkingDirectory参数可以指定运行CMD的起始路径为指定路径,方便找到服务exe
  2. 通过ProcessStartInfo调用CMD
  3. 通过&&连接多行CMD命令

【示例代码】

假设我在程序的当前目录下放了一个piping-server.exe服务。用如下代码可以启动此服务并传递消息。

    private void RunCmdCommand()
        {
            try
            {
                // 获取当前目录
                string currentDirectory = Directory.GetCurrentDirectory();

                // 创建一个新的Process启动信息
                ProcessStartInfo processStartInfo = new ProcessStartInfo
                {
                    FileName = "cmd.exe",
                    Arguments = "/c piping-server && echo 'hello, world'|curl -T- http://127.0.0.1:8080/hello", // 这里写上你想要执行的CMD命令
                    RedirectStandardOutput = true,
                    UseShellExecute = false,
                    CreateNoWindow = true,
                    WorkingDirectory = currentDirectory
                };

                // 启动进程
                using (Process process = Process.Start(processStartInfo))
                {
                    // 读取输出
                    using (System.IO.StreamReader reader = process.StandardOutput)
                    {
                        string result = reader.ReadToEnd();
                        MessageBox.Show(result, "CMD Output");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error");
            }
        }
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每日出拳老爷子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值