我安装了一个名为 Redcar 的 ruby gem,它是从命令行启动的。运行时,它会窃取 shell 直到它终止,所以我必须创建一个新的 shell 窗口才能继续执行命令行工作。我使用的 shell 是来自 MySysGit 的 GITBash shell。
我发现了一个 Redcar.bat 文件,我猜测它是用来以快捷方式启动 Redcar 的,但我不想每次启动 BAT 文件时都打开额外的命令提示符窗口。
我如何才能运行 BAT 而不看到提示?
答案1
您不能——使用内置命令提示符执行批处理文件将保持窗口打开,直到批处理文件退出。
你能要做的是采取措施确保批处理文件尽快退出。如果可能的话,修改批处理文件以运行带有命令的任何程序start
。默认情况下,start
立即返回而不等待程序退出,因此批处理文件将继续运行,并且可能立即退出。再加上修改快捷方式以最小化运行批处理文件,您只会看到任务栏闪烁,甚至看不到屏幕上的窗口。
需要注意的是,如果您运行的是控制台模式程序(许多脚本解释器都是这样),批处理文件将等待程序退出,然后使用start
将生成一个新的控制台窗口。在这种情况下,您需要做的是运行基于 Windows 的解释器版本,而不是基于控制台的解释器版本——没有必要start
。对于 Perl,您需要运行wperl.exe
而不是perl.exe
。对于 Python,它是pythonw.exe
而不是python.exe
。我下载的旧 win32 Ruby 发行版有rubyw.exe
,它应该做同样的事情。
最后一种可能性是使用第三方工具来运行带有隐藏窗口的命令提示符。我听说过这样的事情,但从来没有用过,所以我不知道有什么特别的方法可以给你。
答案2
我认为这是在不打开 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 文件,奇迹就会发生!
您可以在任务计划程序中创建一个任务,然后在其中Action
选择Start a program
您.vbs
创建的脚本。根据您的要求,您可以填写并保存其他属性。
答案3
您可以在命令提示符中使用 START /MIN CMD.EXE /C mybatchfile.bat 运行另一个批处理文件。
从外面它将带来 cmd 控制台窗口,但为了避免这种情况,你可以创建快捷方式文件特性修改为最小化启动。