如何在运行批处理文件时避免打开Cmd窗口

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

1
你不能使用任何批处理命令来隐藏 cmd 窗口。但是,你可以通过 vbscript 启动批处理文件,并将其作为后台进程运行,从而隐藏 cmd 窗口。 - Squashman
2
你可以在你的脚本中加入 powershell -window hidden -command ""。只要确保在结尾处加上 powershell -window normal -command "",如果你的脚本可能从 cmd 控制台运行(而不是双击运行)。窗口仍然会出现一两秒钟,因为 PowerShell 解释器被调用;如果此脚本的执行是自上次启动以来 PowerShell 的第一次调用,则可能需要几秒钟。我所知道的唯一其他选择是像 Squashman 建议的那样使用 VBScript。 - rojo
@rojo 我希望你把那个变成回答。这是我找到的唯一一个与我的用例(将可执行文件位置和参数列表作为两个单独的参数传递给另一个程序的内部实现,调用“dos run命令”并在其中间添加自己的参数)甚至相似的隐藏 cmd 窗口的方法。我最终可能会编译一个自定义的“run-silently”exe,但在项目的测试阶段...... - coppereyecat
3个回答

8
你可以通过创建VB脚本来完成这个任务。
隐藏CMD.vbs
CreateObject("Wscript.Shell").Run "foo.bat", 0, True

这将会以隐藏命令提示窗口的方式运行您的批处理文件。

由于它是隐藏的,创建后如何结束此进程?@secretgenes - Trevor Tracy
如果您的批处理文件名或路径中有空格,例如“foo with space.bat”,则执行以下操作:CreateObject("Wscript.Shell").Run """foo with space.bat""", 0, True - bobt

4
如果你要启动一个批处理文件,使用如下命令:
cmd /c "Your Command and Parameters"

如果你希望批处理文件能够关闭cmd窗口,那么请在批处理文件末尾加上exit
@echo My Batch File
exit

另外,start命令可能会对你有所帮助。 它可以设置为最小化窗口。

START /MIN MyBatch.Bat

1
这个脚本的想法是在直接双击或作为计划任务运行时,弹出一个消息而不显示Cmd窗口。当我尝试在结尾处使用'exit'命令时,它仍然打开了Cmd窗口并保持打开状态,直到我关闭它。 - Gray Death
1
建议您在寻求帮助时附上相关的代码,这有助于他人更好地帮助您。https://stackoverflow.com/help/mcve。您只需编辑您的问题并添加上述内容即可。 - miltonb

1
我的解决方法是在批处理文件中使用startstart不会等待GUI应用程序退出,因此对于启动GUI应用程序的批处理文件,这会导致批处理文件从未可见。
请参阅文档中的以下内容:

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

例如,要从批处理文件中启动任务管理器并隐藏命令窗口:
start taskmgr.exe

这将立即退出,打开任务管理器并不会留下任何命令窗口。

更多信息请参见:https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/start


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接