【问题标题】:Run command line code programmatically using C#使用 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"

【问题讨论】:

    标签: c# asp.net asp.net-mvc-3


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 2020-07-16
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多