使用 C# 以编程方式运行命令行代码

Posted

技术标签:

【中文标题】使用 C# 以编程方式运行命令行代码【英文标题】:Run command line code programmatically using C# 【发布时间】:2012-11-24 03:51:05 【问题描述】:

我正在使用此代码在 Windows 命令提示符下运行.. 但我需要使用 C# 代码以编程方式完成此操作

C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis.exe -pdf "连接 字符串" "C:\Users\XXX\Desktop\连接字符串\DNN"

【问题讨论】:

【参考方案1】:

试试这个

ExecuteCommand("Your command here");

使用进程调用它

 public void ExecuteCommand(string Command)
    
        ProcessStartInfo ProcessInfo;
        Process Process;

        ProcessInfo = new ProcessStartInfo("cmd.exe", "/K " + Command);
        ProcessInfo.CreateNoWindow = true;
        ProcessInfo.UseShellExecute = true;

        Process = Process.Start(ProcessInfo);
    

【讨论】:

如果你想获得输出,请使用 /c 而不是 /k :D【参考方案2】:

您可以使用Process.Start 方法:

Process.Start(
    @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe",
    @"-pdf ""connection Strings"" ""C:\Users\XXX\Desktop\connection string\DNN"""
);

或者,如果您想对 shell 进行更多控制并能够捕获例如标准输出和错误,您可以使用 the overload 获取 ProcessStartInfo

var psi = new ProcessStartInfo(@"C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe")

    Arguments = @"-pdf ""connection Strings"" ""C:\Users\XXX\Desktop\connection string\DNN""",
    UseShellExecute = false,
    CreateNoWindow = true
;
Process.Start(psi);

【讨论】:

可以重定向标准输出,等待流程执行完成后再读取。【参考方案3】:

您应该能够使用流程来做到这一点

        var proc = new Process();
        proc.StartInfo.FileName = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe ";
        proc.StartInfo.Arguments = string.Format(@"0 ""1""" ""2""","-pdf","connection Strings" ,"C:\Users\XXX\Desktop\connection string\DNN");
        proc.StartInfo.UseShellExecute = false;
        proc.StartInfo.RedirectStandardOutput = true;
        proc.Start();
        string outPut = proc.StandardOutput.ReadToEnd();

        proc.WaitForExit();
        var exitCode = proc.ExitCode;
        proc.Close();

【讨论】:

以上是关于使用 C# 以编程方式运行命令行代码的主要内容,如果未能解决你的问题,请参考以下文章

记事本写的C#程序如何运行?

如何用命令行方式运行opencv程序

如何以编程方式在 RedShift sql 脚本文件上运行

如何在不使用命令的情况下以编程方式关闭/重启 linux 机器(运行时)

在 C# 中以编程方式编译打字稿?

如何创建命令行参数