【问题标题】:how not to open a Cmd window when running a batch file运行批处理文件时如何不打开 Cmd 窗口
【发布时间】:2015-11-13 03:21:44
【问题描述】:

我编写的每个批处理文件都会打开一个 Cmd 窗口并使其保持打开状态,直到程序完成。要在 .bat 文件中包含什么命令字符串以不打开 CMD 窗口或打开它并立即隐藏它?我必须保持在 MSW7 Pro 内置编程的范围内。现在,我只是在使用 msg 命令来解决这个问题。为了成功,只有消息窗口本身应该出现在屏幕上。

【问题讨论】:

  • 您无法使用任何批处理文件命令隐藏 cmd 窗口。您可以从 vbscript 启动批处理文件并将其作为隐藏 cmd 窗口的后台进程运行。
  • 您可以将powershell -window hidden -command "" 放入您的脚本中。如果您的脚本可以从 cmd 控制台运行(而不是被双击),请务必在最后输入powershell -window normal -command ""。在调用 PowerShell 解释器时,该窗口仍会出现一秒钟左右;如果此脚本的执行是自上次启动以来第一次调用 PowerShell,则可能需要几秒钟。我知道的唯一其他选择是 Squashman 建议的,使用 VBScript。
  • @rojo 我希望你能回答这个问题。这是迄今为止我发现的唯一一个甚至接近为我的用例隐藏 cmd 窗口的东西(将可执行位置和参数列表作为两个单独的参数传递给另一个程序的内部实现,调用“dos run命令”,并在中间的任何地方添加自己的参数)。我最终可能会最终编译一个自定义的静默运行 exe,但是对于项目的测试阶段......

标签: windows batch-file cmd


【解决方案1】:

如果您要启动批处理文件,请使用:

cmd /c "Your Command and Parameters"

如果你想让批处理文件关闭cmd窗口,那么将exit放在批处理文件的末尾

@echo My Batch File
exit

此外,start 命令可能会对您有所帮助。可以设置最小化窗口。

START /MIN MyBatch.Bat

【讨论】:

  • 这个想法是让这个脚本'@echo off msg * 你好? exit' 直接双击运行或作为计划任务运行时,会弹出一条消息,根本不显示 Cmd 窗口。当我最后用'exit'命令尝试它时,它仍然打开了cmd窗口并保持打开状态直到我关闭它。
  • 建议包含您需要帮助的问题的代码,因为它可以帮助您。 stackoverflow.com/help/mcve。您可以编辑您的问题并添加以上内容。
【解决方案2】:

您可以通过创建一个 vb 脚本来做到这一点。

hideCMD.vbs

CreateObject("Wscript.Shell").Run "foo.bat", 0, True

这将在隐藏命令提示符窗口的情况下运行您的批处理文件。

【讨论】:

  • 既然是隐藏的,那么创建后如何结束这个过程呢? @secretgenes
【解决方案3】:

对我有用的是在批处理文件中使用 start

start 不会等待 GUI 应用程序退出,因此对于正在启动 GUI 应用程序的批处理文件,这会导致批处理文件永远不可见。

请参阅以下文档:

如果您运行 32 位图形用户界面 (GUI) 应用程序,cmd 不会在返回命令提示符之前等待应用程序退出。如果您从命令脚本运行应用程序,则不会发生此行为。

例如从批处理文件启动任务管理器而不显示命令窗口:

start taskmgr.exe

这会立即退出,出现任务管理器并且没有打开任何 cmd 窗口。

欲了解更多信息:https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/start

【讨论】:

    猜你喜欢
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多