我有这个bat文件,我想在运行它时最小化cmd窗口:
@echo off
cd /d C:\leads\ssh
call C:\Ruby192\bin\setrbvars.bat
ruby C:\leads\ssh\put_leads.rb
基本上我希望命令窗口立即最小化。关于如何做到这一点的任何想法?
答案 0 :(得分:57)
有一种非常有趣的方法可以通过使脚本重新启动最小化来最小化执行脚本。以下是放在脚本开头的代码:
if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit
... script logic here ...
exit
执行脚本时IS_MINIMIZED
未定义(if not DEFINED IS_MINIMIZED
)所以:
set IS_MINIMIZED=1
。脚本使用 start 命令&& start "" /min "%~dpnx0" %*
启动自身的副本,其中:
""
- 窗口的空标题。/min
- 切换到最小化运行。"%~dpnx0"
- 脚本的完整路径。%*
- 传递所有脚本的参数。然后,初始脚本完成其工作:&& exit
。
对于脚本变量IS_MINIMIZED
的已启动副本,由原始脚本设置,因此它只是跳过第一行的执行并直接转到脚本逻辑。
exit
结束,否则在脚本执行后cmd窗口将无法关闭。如果您的脚本不接受参数,您可以使用参数作为标志而不是变量:
if "%1" == "" start "" /min "%~dpnx0" MY_FLAG && exit
或更短
if "%1" == "" start "" /min "%~f0" MY_FLAG && exit
答案 1 :(得分:39)
使用start
命令,/min
开关最小化运行。例如:
start /min C:\Ruby192\bin\setrbvars.bat
由于您已将批处理文件指定为参数,因此命令处理器将运行,并传递/k
开关。这意味着命令完成后窗口将保留在屏幕上。您可以通过自己显式运行cmd.exe
并在必要时传递适当的开关来改变该行为。
或者,您可以创建批处理文件的快捷方式(仍然是PIF文件),然后更改其属性以使其最小化。
答案 2 :(得分:15)
我知道的唯一方法是创建批处理文件的Windows快捷方式,然后将其属性更改为默认情况下运行最小化。
答案 3 :(得分:3)
如果您想为Win-Run / autostart启动批处理,我在https://www.computerhope.com/issues/ch000932.htm& https://superuser.com/questions/364799/how-to-run-the-command-prompt-minimized
cmd.exe /c start /min myfile.bat ^& exit
cmd.exe
,因为start is no windows命令可以在批处理之外执行/c
=开始后退出^& exit
结尾,exit
部分也会确保窗口关闭但是,初始cmd仍然没有最小化。
答案 4 :(得分:2)
使用PowerShell,您可以在不打开新实例的情况下最小化同一文件。
powershell -window minimized -command ""
-window hidden
和-window normal
也可以完全隐藏或还原。
答案 5 :(得分:1)
如果您在bat文件中键入此文本:
start blah.exe /min
一旦打开程序,它将立即最小化。你只会看到它的短暂闪现,它会消失。
答案 6 :(得分:1)
另一个能够在任何时候(不仅在启动脚本时)最小化控制台窗口的免费第三方工具是带有TWAPI扩展的Tcl:
echo package require twapi;twapi::minimize_window [twapi::get_console_window] | tclkitsh -
此处tclkitsh.exe
位于PATH中,是可从sourceforge.net/projects/twapi/files/Tcl binaries/Tclkits with TWAPI/下载的tclkit-cli-*-twapi-*.exe
个文件之一。我更喜欢Bernard Chen's answer中提到的更轻的min.exe
,因为我已经将TWAPI用于无数其他目的。
答案 7 :(得分:0)
您可以尝试按如下方式运行脚本
var WindowStyle_Hidden = 0
var objShell = WScript.CreateObject("WScript.Shell")
var result = objShell.Run("cmd.exe /c setrbvars.bat", WindowStyle_Hidden)
将文件另存为filename.js
答案 8 :(得分:0)
一个选项是找到一个可以改变当前正在运行的控制台窗口的窗口状态的各种实用程序,并从批处理脚本中调用它。
您可以在批处理脚本中首先运行它。以下是两个这样的工具:
答案 9 :(得分:0)
您可以在运行期间最小化命令提示符,但您还需要两个额外的脚本:windowMode和getCmdPid.bat:
@echo off
call getCmdPid
call windowMode -pid %errorlevel% -mode minimized
cd /d C:\leads\ssh
call C:\Ruby192\bin\setrbvars.bat
ruby C:\leads\ssh\put_leads.rb
答案 10 :(得分:0)
另一个适用于我的选项是使用ConEmu,请参阅http://conemu.github.io/en/ConEmuArgs.html
"C:\Program Files\ConEmu\ConEmu64.exe" -min -run myfile.bat
答案 11 :(得分:0)
“最小化” cmd窗口的一种方法是使用类似...的方法来减小控制台的大小。
echo DO NOT CLOSE THIS WINDOW
MODE CON COLS=30 LINES=2
如果愿意,可以将COLS减小到18,将LINES减小到1。 优点是它可以在WinPE(32位或64位)下运行,并且不需要任何第三方工具。
答案 12 :(得分:0)
试试这些
CONSOLESTATE /Min
或:
SETCONSOLE /minimize
或:
TITLE MinimizeMePlease
FOR /F %%A IN ('CMDOW ˆ| FIND "MinimizeMePlease"') DO CMDOW %%A /MIN