首页 > 解决方案 > 在 C# 中执行具有复杂输出的 cmd 命令

问题描述

我经常发现自己在 pc 上使用不同的命令来检查系统中的内容,我想基本上创建一个小的独立 exe,它将执行我所有的常用命令并给我每个命令的输出,而无需我手动输入它们......我要注意的是,我知道这不是 google 上关于使用 c# 执行 cmd 命令的第一个问题,但不符合我的命令要求,例如,它们中的许多执行诸如复制或移动或制作之类的命令,而不是它们有一个复杂的输出,我想执行例如“sfc /scannow”命令,它输出一个进度条,它测量当然的进度和一个最终输出,问题是我尝试了很多方法来尝试,但所有失败的,shell 执行在打开另一个 cmd 窗口甚至需要提升时效果很好,但是一旦进度条结束并显示最终输出,它就会崩溃(因此我看不到最终输出),shell 执行关闭(执行通过主窗口)它要么根本不显示进度条而只显示最终输出,要么什么都不显示,或者它确实显示了进度条,但每次增加它都是一个新行,显然看起来不正确...一条新线,显然看起来不正确...一条新线,显然看起来不正确...

这是我的代码:

public static void ExecuteCommand(string command) {
        Process prc = new Process();
        ProcessStartInfo info = new ProcessStartInfo
        {
            Verb = "runas",
            FileName = "cmd.exe",
            UseShellExecute = true,
            Arguments = "/c" + command
        };
        prc.StartInfo = info;
        prc.Start();
        prc.WaitForExit();
        prc.Close();
    }

如果有人能想到解决办法,请告诉我,我已经坚持了大约 3 天......

标签: c#shellconsole-application

解决方案


原来罪魁祸首是“/c”,如果我把它改成“/K”,窗户会一直打开,直到我像我想要的那样手动关闭它。


推荐阅读