如何最小化bat文件中的命令提示符

时间:2012-02-10 17:45:29

标签: windows command-line batch-file cmd command-prompt

我有这个bat文件,我想在运行它时最小化cmd窗口:

@echo off
cd /d C:\leads\ssh 
call C:\Ruby192\bin\setrbvars.bat
ruby C:\leads\ssh\put_leads.rb

基本上我希望命令窗口立即最小化。关于如何做到这一点的任何想法?

13 个答案:

答案 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)所以:

  1. IS_MINIMIZED 设置为 1 set IS_MINIMIZED=1
  2. 脚本使用 start 命令&& start "" /min "%~dpnx0" %*启动自身的副本,其中:

    1. "" - 窗口的空标题。
    2. /min - 切换到最小化运行。
    3. "%~dpnx0" - 脚本的完整路径。
    4. %* - 传递所有脚本的参数。
  3. 然后,初始脚本完成其工作:&& exit

  4. 对于脚本变量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也可以完全隐藏或还原。


来源:https://stackoverflow.com/a/45061676/1178975

答案 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)

一个选项是找到一个可以改变当前正在运行的控制台窗口的窗口状态的各种实用程序,并从批处理脚本中调用它。

您可以在批处理脚本中首先运行它。以下是两个这样的工具:

min.exe http://www.paulsadowski.com/wsh/cmdprogs.htm

cmdow http://www.commandline.co.uk/cmdow/index.html

答案 9 :(得分:0)

您可以在运行期间最小化命令提示符,但您还需要两个额外的脚本:windowModegetCmdPid.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