[英]How do I run another cmd.exe call inside a Console application?
我正在编写一个C#Console应用程序,我需要使用Chocolatey安装依赖项,然后设置一些配置。 问题是我想在一个控制台中完成所有这些任务。 但是,下面的代码示例会弹出一个新的控制台窗口。
static void Main(string[] args) {
// do some stuff
System.Diagnostics.Process.Start("CMD.exe", "/C choco install nssm");
// do other stuff
}
有什么办法可以将设置部分作为此控制台应用程序的一部分吗?
您可以使用接受ProcessStartInfo
参数的Process.Start
方法的另一个覆盖 。 此类具有WindowStyle
属性,您可以将其设置为ProcessWindowStyle.Hidden
。 这将使进程创建的任何窗口都被隐藏。
ProcessStartInfo process_start_info = new ProcessStartInfo();
process_start_info.WindowStyle = ProcessWindowStyle.Hidden;
process_start_info.FileName = @"C:\ProgramData\chocolatey\bin\choco.exe";
process_start_info.Arguments = "install googlechrome";
var process = Process.Start(process_start_info);
process.WaitForExit();
请注意,我正在执行choco.exe而不是执行cmd.exe。 但是,如果您能够使用cmd.exe,那么这应该不是问题。
另请注意,我将调用Process.Start
的结果存储到变量中,然后我使用WaitForExit
方法等待进程完成。 之后,您只需启动一个新进程即可使用类似代码安装新程序包。 您可以将此功能封装到某个方法中并多次使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.