如何创建一个Windows Batch文件,执行时不显示命令行提示符?
我安装了一个叫Redcar的Ruby gem,从命令行启动。当它运行时,它会窃取shell直到终止,所以我必须创建一个新的shell窗口来继续进行命令行工作。我使用的shell是MySysGit中的GITBash shell。
我发现了一个Redcar.bat文件,我想,这个文件是用来启动Redcar的快捷方式,但我不希望每次启动BAT文件时,额外的命令提示符窗口都会打开。
我安装了一个叫Redcar的Ruby gem,从命令行启动。当它运行时,它会窃取shell直到终止,所以我必须创建一个新的shell窗口来继续进行命令行工作。我使用的shell是MySysGit中的GITBash shell。
我发现了一个Redcar.bat文件,我想,这个文件是用来启动Redcar的快捷方式,但我不希望每次启动BAT文件时,额外的命令提示符窗口都会打开。
你不能—-用内置的命令提示符执行一个批处理文件,在批处理文件退出之前,窗口会一直打开。如果有可能的话,修改批处理文件,用start
命令运行任何程序。默认情况下,start
会立即返回,而不等待程序退出,所以批处理文件会继续运行,并且可能会立即退出。
的一个注意事项是,如果你运行的是一个控制台模式的程序,很多脚本解释器都是这样,那么批处理文件会等待程序退出,而使用start
会产生一个新的控制台窗口。在这种情况下,你需要做的是运行基于 Windows 的解释器版本,而不是基于控制台模式的解释器 — 无需使用 start
。对于 Perl,你需要运行 wperl.exe
而不是 perl.exe
。对于Python,则需要运行pythonw.exe
而不是python.exe
。我下载的旧的win32 Ruby发行版有rubyw.exe
,应该也是这样的。我听说过这种东西,但从来没有用过,所以我不知道有什么特别的东西可以指点你。
我想这是最简单、最短的解决方法,在运行批处理文件的时候不需要打开DOS窗口,当你想安排一组命令周期性的运行时,会让人很烦心,所以DOS窗口不断的弹出,下面是你的解决方法。用VB脚本调用批处理文件…..
Set WshShell = CreateObject("WScript.Shell" )
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0
Set WshShell = Nothing
将上面的几行复制到编辑器中,保存为.VBS扩展名的文件。相应地编辑.BAT文件的名称和路径。然后只需运行.vbs文件,神奇的事情就会发生!
要做到这一点,使用程序BAT To Exe Converter将你的批处理文件转换成可执行文件。因此,当你运行它时,它将在没有窗口的情况下运行。
延续Dennis Williamson的回答,你可以编辑批处理文件,并将START /B
附加在你正在执行的命令中。
例如,我有一个运行putty的批处理文件,遇到了同样的问题(额外的CMD),所以我是这样写的:
@ECHO OFF START /B putty.exe -load _name\_of\_my\_config\_file_
它的工作原理是这样的: &001
它的工作原理是完美的。
试试这个:
START /B batchfile
**注由barlop添加*
start /? 说的是/B
B 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.
你可以使用 RunHiddenConsole
hideExec.bat
@echo off
RunHiddenConsole batch.bat
由Indago 提供的回答】(https://superuser.com/a/701867/141909)到目前为止,对我来说是最好的解决方案。VBS文件让我可以通过脚本运行批处理的功能,防止了CMD窗口的出现。有几个注意事项:
1.如果你的批处理需要管理员权限,请创建或使用一个现有的批处理,调用VBS并以管理员身份运行该批处理。