【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");}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/40877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国东方资产管理25届秋招北森测评笔试如何高分通过?真题考点分析看完这篇就够了

一、东方资管校招测评题型分析 中国东方资产管理股份有限公司(中国东方资管)的校园招聘测评题型主要包括以下几个部分: 1. **计分题,行测知识**:这部分题量大约在56-57题左右,分为不同的模块进行计时测试。…

Spzhi知识付费社区主题免费下载

主题介绍 用typecho打造一款知识付费社区主题,带会员功能,为内容创业者提供知识变现一站式解决方案,让用户沉淀到自己的平台,形成自己的私域流量池,打造流量闭环,零门槛搭建你的移动网络课堂 主题功能 支…

SpringBoot Task 定时任务

springboot中使用Task定时任务非常简单 springboot 中自带的都有注解不需要引入依赖 第一步:在启动类上添加启用定时任务注解 EnableScheduling //开启任务调度 第二步:创建一个springboot组件用于定时任务管理 package cn.lsy.api.Task;import cn.ls…

论文解读——如何生成高分辨率图像PGGAN

论文:Progressive Growing of GANs for Improved Quality, Stability, and Variation(2017.10) 作者:Tero Karras, Timo Aila, Samuli Laine, Jaakko Lehtinen 链接:https://arxiv.org/abs/1710.10196 代码&#xff1a…

前端必知的跨站脚本攻击(XSS)示例与解决方案

跨站脚本攻击(Cross-Site Scripting,通常缩写为XSS)是一种常见的网络安全漏洞,它允许攻击者将恶意脚本注入到其他用户会浏览的页面中。 XSS攻击的示例代码可以帮助我们了解攻击者可能使用的技术。但请注意,了解这些示例…

MyBatis中resultMap与resultType区别

在MyBatis中,resultType 和 resultMap 都是用来定义查询结果如何被映射到Java对象上的,但它们的使用场景和方式有所不同。 resultType 含义: resultType 是一个简化的结果映射方式,用于直接将查询结果映射到一个已知类型的Java Bean或基本…

idea删除分支并同步到gitLab以及gitLab上的分支删除

目录 idea删除分支并同步到gitLab 方法一(推荐) 方法二(命令行) gitLab上的分支删除 前言-与正文无关 ​ 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&…

初入Node.js必备知识

Node.js因什么而生,作用是干什么? Node.js是一个用c和c打造的一个引擎,他能够读懂JavaScript,并且让JavaScript能够和操作系统打交道的能力 JavaScript 原本只能在浏览器中运行,但随着Web应用程序越来越复杂,仅靠客户端JavaScri…

绩效管理,不再只是一串数字!

在数字化转型的大潮中,绩效管理不再只是枯燥的数字统计。搭贝的绩效管理系统,为企业提供灵活多样的考核模式与工具,助力实现科学、高效的管理。无论是KPI(关键绩效指标)还是OKR(目标与关键成果)…

EHS是什么意思啊?EHS系统有什么作用?

当你走进一家现代化的工厂或企业,你可能会好奇:这些繁忙的生产线和高效运转的设备背后,是如何确保员工的安全、环境的保护和产品的质量的?答案可能就藏在“EHS系统”这个名词里。 那么,EHS是什么意思啊?它…

数据结构第08小节:双端队列

双端队列(deque,double-ended queue)是一种具有队列和栈特性的数据结构,允许在其两端进行插入和删除操作。在Java中,java.util.Deque接口就是双端队列的实现,而ArrayDeque和LinkedList是其中的具体实现类。…

如何根据经纬度精确计算两点之间的距离

以下代码用python2运行 #!/usr/bin/python #codingutf-8 from __future__ import print_function import sys reload(sys) sys.setdefaultencoding("utf-8") import mathdef haversine_distance(lon1, lat1, lon2, lat2):# 将纬度和经度从度转换为弧度lat1_rad mat…

【C#】函数方法、属性分文件编写

1.思想 分文件编写是面向对象编程的重要思想,没有实际项目作为支撑很难理解该思想的精髓,换言之,一两个函数代码量因为太少无法体现分文件编写减少大量重复代码的优势。 2.项目结构介绍 整项目的名称叫AutoMetadata,是一个基于W…

JAVA:文件防重设计指南

1、简述 在现代应用程序中,处理文件上传是一个常见的需求。为了保证文件存储的高效性和一致性,避免重复存储相同的文件是一个重要的优化点。本文将介绍一种基于哈希值的文件防重设计,并详细列出实现步骤。 2、设计原理 文件防重的基本思路…

Dns被莫名篡改的逆向分析定位(笔记)

引言:最近发现用户的多台机器上出现了Dns被莫名修改的问题,从系统事件上看并未能正常确定到是那个具体软件所为,现在的需求就是确定和定位哪个软件具体所为。 解决思路: 首先到IPv4设置页面对Dns进行设置:通过ProcExp…

setjmp和longjmp函数使用

这里用最简单直接的描述&#xff1a;这两组函数是用于实现类似vscode全局的标签跳转功能&#xff0c;setjmp负责埋下标签&#xff0c;longjmp负责标签跳转。 #include <stdio.h> #include <stdlib.h> #include <setjmp.h>jmp_buf envbuf1; jmp_buf envbuf2;…

HttpServer内存马

HttpServer内存马 基础知识 一些基础的方法和类 HttpServer&#xff1a;HttpServer主要是通过带参的create方法来创建&#xff0c;第一个参数InetSocketAddress表示绑定的ip地址和端口号。第二个参数为int类型&#xff0c;表示允许排队的最大TCP连接数&#xff0c;如果该值小…

【面试系列】软件工程师高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

JAVA每日作业day7.4

ok了家人们今天学习了Date类和simpleDateformat类&#xff0c;话不多说我们一起看看吧 一.Date类 类 java.util.Date 表示特定的瞬间 ( 日期和时间 ) &#xff0c;精确到毫秒。 1.2 Date类的构造方法 public Date(): 用来创建当前系统时间对应的日期对象。 public Date(long …

【java开发环境】多版本jdk 自由切换window和linux

win10 一、准备 各种版本的jdk&#xff0c;按自己的需要下载。 我这里是需要jdk17和jdk8。 1、jdk17 下载&#xff1a;Java Downloads | Oracle&#xff0c;选择exe后缀文件 2、jdk8下 载&#xff1a;Java Downloads | Oracle&#xff0c;选择exe后缀文件 二、详细步骤 1、…