【问题标题】:how to execute batch file from C/C++ w/o console window?如何从没有控制台窗口的 C/C++ 执行批处理文件?
【发布时间】:2011-07-12 21:29:34
【问题描述】:

我正在通过 system("start /B mybatch.bat") 调用从 C++ 程序执行批处理文件,其中 /B 应该在没有控制台窗口的情况下运行批处理文件。但它仍然可见。

编辑:我按照 cmets 中的建议通过 ShellExecute() 解决了这个问题

【问题讨论】:

    标签: c++ c windows batch-file console


    【解决方案1】:

    你为什么不改用 CreateProcess 呢?

    【讨论】:

    • ShellExecute,这可能更简单。
    • @user: ShellExecute 不允许你传入STARTUPINFO 结构,它允许隐藏窗口。
    • @Ben Voigt:但它确实有 nShowCmd。我不知道它是否适用于 OP,但我认为替代功能值得一提。
    • 我使用system() 调用只是因为它非常简单。我没有看到这个调用控制台窗口,我看到了由start /B mybatch.bat 执行的批处理文件控制台窗口。这个标志应该在不创建新窗口的情况下运行命令:Start application without creating a new window. The application has ^C handling ignored. Unless the application enables ^C processing, ^Break is the only way to interrupt the application. 我是否误解了这个语句,是在同一个窗口中批量执行,而不是像start 命令通常那样启动单独的进程?
    【解决方案2】:

    在 Windows 上,如果您不使用 Windows Runtime,可以尝试_popen_wpopenMSDN

    我使用它主要是因为_popen 创建了一个管道,因此我也可以轻松读取输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 2016-11-29
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      相关资源
      最近更新 更多