C#执行cmd.exe 不能关闭问题

C# 运行cmd.exe执行ffmpeg进行视频转码,程序无法关闭 ffmpeg视频转码,转码完成后程序一直卡死且一直未收到exit消息,原因是ffmpeg是StandardError流,要读取StandardError而不是StandardOutput。 public static void runCmdTranscoding() { DateTime start = DateTime.Now; try ... 阅读详情

        目前做的项目中有一个功能是管理员能够手动的备份数据库(sqlserver 2012)。第一种方法便是用sqlserver的 backup 命令来实现。在这里就需要用csharp调用命令行来实现。在网上看到的方法全都是这种(用cmd工具来执行命令)

 /// <summary>
    /// 运行CMD命令
    /// </summary>
    /// <param name="cmd">命令</param>
    /// <param name="showWindow">是否显示执行窗体</param>
    /// <returns></returns>
    public static string ExecuteCmd(string[] cmd, bool showWindow)
    {
      Process p = new Process();
      p.StartInfo.FileName = "cmd.exe";
      //关闭shell的使用
      p.StartInfo.UseShellExecute = false;
      //重定向标准输入
      p.StartInfo.RedirectStandardInput = true;
      //重定向标准输出
      p.StartInfo.RedirectStandardOutput = true;
      //重定向标准错误
      p.StartInfo.RedirectStandardError = true;
      //是否显示窗体
      p.StartInfo.CreateNoWindow = !showWindow;
      p.Start();
      
      p.StandardInput.AutoFlush = true;
      for (int i = 0; i < cmd.Length; i++)
      {
        p.StandardInput.WriteLine(cmd[i].ToString());
      }
      p.StandardInput.WriteLine("exit");
      string strRst = p.StandardOutput.ReadToEnd();
      p.WaitForExit();
      p.Close();
      p.Dispose();
      return strRst;
    }

我觉得上面这种有个不好之处  当所执行的命名(程序)不是执行完就关闭(如 ftp osql 等命令)的时候就会出现cmd这个进程无法关闭导致程序卡死。

于是还不如直接执行该执行的程序(ftp.exe  osql.exe )下面是我的方法

<span style="white-space:pre">	</span>/// <summary>
       /// 通过命令行方式执行 程序
       /// </summary>
       /// <param name="app">程序名</param>
       /// <param name="argments">程序参数</param>
       /// <param name="cmd">进入程序后的命令</param>
       /// <param name="showWindow">是否显示窗口</param>
       /// <returns>命令行执行完后内容</returns>
        public static string ExecuteCmd(string app,string argments,string[] cmd, bool showWindow)
        {
            Process p = new Process();
            p.StartInfo.FileName = app;
            p.StartInfo.Arguments = argments;
            //关闭shell的使用
            p.StartInfo.UseShellExecute = false;
            //重定向标准输入
            p.StartInfo.RedirectStandardInput = true;
            //重定向标准输出
            p.StartInfo.RedirectStandardOutput = true;
            //重定向标准错误
            p.StartInfo.RedirectStandardError = true;
            //是否显示窗体
            p.StartInfo.CreateNoWindow = !showWindow;
            p.Start();
            p.StandardInput.AutoFlush = true;
            for (int i = 0; i < cmd.Length; i++)
            {
                p.StandardInput.WriteLine(cmd[i].ToString());
            }
            string strRst = p.StandardOutput.ReadToEnd();
            p.WaitForExit();
            p.Close();
            p.Dispose();
            return strRst;
        }


 
C#调用cmd执行ftp命令 1、C#执行cmd命令   public string ExeCommand()         {             Process p = new Process();   //实例一个Process类,启动一个独立进程             p.StartInfo.FileName = "cmd.exe";             p.StartInfo.UseShel 阅读详情

相关推荐

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

用VS写一个C#窗体程序,第一步需要用CMD启动一个外部服务并发送信息给该服务器,涉及两步命令,第一步是启动服务,第二步是发送信息。假设我在程序的当前目录下放了一个piping-server.exe服务。用如下代码可以启动此服务并传递消息。

每日出拳老爷子的博客 1079

C#强制杀进程

通过cmd命令实现 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics; namespace runBat { class Program { static void Main(string[] args) {

Kelvin_Yan的专栏 1747

C#调用CMD命令行实现异步交互执行

在现代软件开发中,C# 作为 .NET 平台上的主流编程语言,广泛应用于系统管理、自动化脚本开发、运维工具构建等领域。通过 C# 调用 Windows 命令行(CMD),开发者可以无缝集成系统级命令,实现对操作系统的高效控制。本章将从技术背景入手,分析为何选择 C# 作为调用 CMD 命令的开发语言,探讨其在自动化运维、服务程序开发、部署脚本编写等场景中的实际应用价值。同时,我们还将介绍 .NET 框架中用于进程控制的核心类 ——Process和。

weixin_33750664的博客 1524

C#使用Process操作CMD,process.StandardOutput.ReadToEnd阻塞/假死/获取不到信息/无法关闭CMD真正原因及解决方案!!

网上看了很多解决方案 有的说在最后一条命令执行"exit", 有的说重定向标准错误输出要设置成false(process.StartInfo.RedirectStandardError = false;) 有的说命令执行完要获取输出信息,否则会一直等待↓↓↓↓↓ output = process.StandardOutput.ReadToEnd(); 和errOutput = pro...

PLA12147111的博客 1万+

C#操作cmd,启动命令行窗口

C#启动cmd命令行窗口,动态执行命令。

C#隐式运行CMD命令行窗口的方法

详细描述C#开发时,对于CMD命令调用的过程和方法。用于程序开发

C#异步调用Process()后台静默调用cmd控制台且中途不退出指令环境(实现C#调用Vivado的tcl控制台,执行tcl指令)

C#调用cmd控制台操作,网上有太多的教程了,但是大多数都是执行完一条指令,退出Process,下次执行指令,再次new Process(),(只为了接收到cmd指令的回复,不然会进程阻塞,程序至此不会再跑。)这种情形如果是执行bat文件,或者执行类似ping这种对执行下条指令没有运行环境要求的指令,影响不大。 同步调用: 参考例子: https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process?re...

王小波门下走狗 8808

Python+gensim【中文LDA】简洁模型

文章目录完整代码过程详解words_lsdictionarydictionary.doc2bow函数corpuslda 完整代码 from gensim import corpora, models import jieba.posseg as jp # 待分析文本集 text1 = '美国教练坦言,没输给中国女排,是输给了郎平' text2 = '中国女排世界排名第一?真实水平如何,听听巴西和美...

ArYe 2万+

C#程序调用cmd.exe执行命令

转:https://www.cnblogs.com/njl041x/p/3881550.html 代码部分 usingSystem.Diagnostics; publicclassCmdHelper { privatestaticstringCmdPath = @"C:\Windows\System32\cmd.e...

4530

手把手教你用Ubuntu 22.04的附加驱动工具安装NVIDIA显卡驱动(含常见错误修复)

本文详细介绍了在Ubuntu 22.04系统上,如何通过图形化的“附加驱动”工具安全、便捷地安装NVIDIA显卡驱动。内容涵盖从准备工作、禁用默认的nouveau驱动、图形界面安装实操,到安装后的验证(如使用nvidia-smi命令),并提供了安装失败黑屏、亮度调节失效等常见问题的深度解决方案,帮助用户彻底搞定驱动安装难题。

weixin_29248653的博客 602

Nvivo12新手避坑指南:从安装到编码的完整流程(附实战案例)

本文为Nvivo12新手提供了从软件安装、初始设置到数据导入和编码分析的完整避坑指南。通过一个“校园欺凌现象的学生访谈研究”实战案例,详细拆解了处理中文文本、创建项目结构、执行手动编码及高级查询等关键步骤,帮助研究者避开常见错误,快速上手并高效完成质性数据分析。

resnet7explorer的博客 318

C#完整调用cmd命令,在不重启cmd进程的情况下连续执行cmd命令,并获得执行结果,全后台执行不弹黑框。

由于需求所迫,网上现有资料中都无法找到C#完整连续调用cmd命令的资料。于是自己研究了一番,现有资料都说C#调用cmd命令时必须要加“exit”或者把cmd进程Close后才会有运行结果,其实不然。之所以要等进程结束才会有结果,是因为cmd在输出结束后会等待下一次输入,从而造成线程阻塞,就相当于C#控制台的Console.ReadLine()会造成线程阻塞一样。 既然需要等待输入会造成线程阻塞,...

chunTF的博客 7364

小红书x-mini签名逆向实战:Frida动态Hook与算法还原

在移动App协议分析中,请求签名机制是保障接口安全的核心技术,其本质是客户端对请求参数、时间戳、设备指纹等要素进行加密认证的过程。理解签名原理需掌握Native层加密流程、JNI调用机制及密钥动态派生逻辑。Frida作为主流动态插桩工具,能绕过符号剥离、字符串加密和控制流混淆等反分析手段,在函数执行瞬间捕获寄存器状态、内存数据与调用上下文,实现签名算法的完整还原。该技术广泛应用于合规内容监测、API自动化调用与竞品协议研究等工程场景。本文聚焦小红书x-mini签名这一典型样本,详解从JNI_OnLoad定位

weixin_31264565的博客 457

C#执行CMD命令并返回结果

转载:http://iusers.com.cn/post/C-command-and-return-to-the-implementation-of-the-results-CMD 公司要求写一个用cmd的ftp命令上传文件的,写到一半发现一个问题,cmd的ftp命令的密码必须在界面里面输入,不能在程序里面控制。现在需要换成用协议上传的。把代码共享。关闭进程是网上找的。运行了cmd

郑长风 3758

Python爬虫实战:利用Scrapy+Playwright高效爬取TED演讲数据

在当今信息爆炸的时代,TED演讲作为全球知名的思想传播平台,汇聚了各领域顶尖人才的精彩分享。对于数据分析师、研究人员或内容创作者来说,获取TED演讲的完整数据集具有重要价值。本文将详细介绍如何使用Python中最先进的爬虫技术组合——Scrapy框架配合Playwright浏览器自动化工具,高效爬取TED演讲的完整数据。传统爬虫技术在处理现代动态网页时面临诸多挑战,而本文将展示如何利用最新工具解决这些问题。

2201_76125261的博客 205

Python爬虫实战:携程旅游攻略爬取全流程解析(动态接口+反爬破解+异步爬取)

本文介绍了携程旅游攻略的爬取全流程,涵盖静态和动态页面抓取、异步请求、高级反爬策略以及数据存储和简单分析。增加用户评论和评分抓取结合NLP分析攻略文本情感与关键词建立旅游推荐系统自动化代理IP池和验证码识别模块。

2201_76125261的博客 2039

在进程中执行cmd.exe指令关闭其它进程的方式[c#]

关闭其它进程

shigzhu的专栏 540

RK3568笔记十七:LVGL v8.2移植

若该文为原创文章,转载请注明原文出处。本文介绍嵌入式图形库移植到Linux开发板ATK-RK3568上的步骤。

4232

C#执行cmd

C#执行cmd

刘凤飞 2663

代谢组数据分析(十五):基于python语言构建PLS-DA分类预测模型

本教程阐述典型代谢组学数据分析工作流程,用于二元分类结果的研究。流程主要步骤如下:首先从 Excel 表格导入代谢物与实验数据,接着基于汇总 QC 进行数据清洗。随后借助主成分分析可视化检查数据质量,再开展两类单变量统计。之后运用偏最小二乘判别分析(PLS - DA)实施多变量分析,此过程涵盖模型优化(对比 R2 与 Q2)、置换测试及明确模型预测指标、确定特征重要性、对模型预测数据进行可视化。最终将统计表格导出至 Excel 表格,完整呈现从数据导入到分析结果输出的全过程。

专注生信领域 2876

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

c#关闭系统进程以及如何调用cmd并执行命令

使用了两种方法,一种是调用cmd执行强制关闭命令,另一种是通过C#提供的方法进行关闭  第一种  string ProcessName="explorer";//这里换成你需要删除的进程名称    Process[] MyProcess1=Process.GetProcessesByName(ProcessName);  Process MyProcess=new Process();  //设定

Annie_Cai的专栏 1068

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C#使用cmd执行.exe文件,并在程序关闭时关闭打开的进程

本来是参考网上的来自酷小孩的一段代码(博主吐槽非常正确),如下: string str = Console.ReadLine(); System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "cmd.exe"; p.St...

Micusd的博客 8480

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C#关闭和启动Explorer.exe

C#关闭和启动explorer.exe程序

weixin_43152819的博客 1292

C#调用python代码

C#调用python代码一、通过cmd的方式调用出现的问题C#执行cmd.exe 不能关闭问题Python之一行代码解决这个错误:OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。二、简单的方法1.C# 调用python 一、通过cmd的方式调用 出现的问题 C#执行cmd.exe 不能关闭问题 C#执行cmd.exe 不能关闭问题 这个链接中说明了这个问题:当所执行的命名(程序)不是执行完就关闭(如 ftp osql 等命令)的时候就会出现cmd

sinat_37281674的博客 2837
下一篇: 关于火狐浏览器和IE浏览器 的<td></td>不能被撑满的经验
tearsknow
博客等级 码龄14年 8粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值