c# - 如何在控制台应用程序中运行另一个 cmd.exe 调用?

标签 c# cmd console chocolatey

我正在编写一个 C# 控制台应用程序,我需要使用 Chocolatey 安装依赖项,然后设置一些配置。问题是我想在一个控制台中完成所有这些任务。但是,下面的代码示例会弹出一个新的控制台窗口。

static void Main(string[] args) {
    // do some stuff
    System.Diagnostics.Process.Start("CMD.exe", "/C choco install nssm");
    // do other stuff
}

有什么方法可以将设置部分作为此控制台应用程序的一部分吗?

最佳答案

您可以使用 another override接受 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 方法等待进程完成。之后,您可以简单地启动一个新过程来使用类似的代码安装一个新的包。您可以将此功能封装到某个方法中并多次使用它。

关于c# - 如何在控制台应用程序中运行另一个 cmd.exe 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33838623/

相关文章:

C/C++ 如何运行相同的 switch case 直到它的条件为真并继续而不会崩溃?

powershell - 为什么 PSModulePath 不是 PowerShell 变量

c# - 将实现哪个接口(interface)?

c# - 使用 RestSharp 在 multipart/form-data POST 中包含文件时出现问题

python 使用 win32api 设置控制台全屏(或最大窗口大小)

c# - 通过命令行传递 JSON 字符串

c# - 在 LINQ 中使用 select new 返回列表

C# 在没有 Excel 的情况下将 .xls 转换为 .csv

c# - 使控制台不可见的命令参数

android - 有没有办法在运行 Android 应用程序时查看打印消息?