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

Mat*_*iby 42 windows command-line cmd batch-file command-prompt

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

@echo off
cd /d C:\leads\ssh 
call C:\Ruby192\bin\setrbvars.bat
ruby C:\leads\ssh\put_leads.rb
Run Code Online (Sandbox Code Playgroud)

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

izz*_*kil 66

有一种非常有趣的方法可以通过使脚本重新启动最小化来最小化执行脚本.以下是放在脚本开头的代码:

if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit
... script logic here ...
exit
Run Code Online (Sandbox Code Playgroud)

这个怎么运作

正在执行脚本时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.

对于脚本变量的启动副本IS_MINIMIZED由原始脚本设置,因此它只是跳过第一行的执行并直接转到脚本逻辑.

备注

  • 您必须保留一些变量名称才能将其用作标志.
  • 脚本应该以结束exit,否则在脚本执行后不会关闭cmd窗口.
  • 如果您的脚本不接受参数,您可以使用参数作为标志而不是变量:

    if "%1" == "" start "" /min "%~dpnx0" MY_FLAG && exit 或更短 if "%1" == "" start "" /min "%~f0" MY_FLAG && exit

  • 添加 "not", eq, -> 如果没有定义 (2认同)

Cod*_*ray 40

使用该start命令,使/min交换机最小化运行.例如:

start /min C:\Ruby192\bin\setrbvars.bat
Run Code Online (Sandbox Code Playgroud)

由于您已指定批处理文件作为参数,因此运行命令处理器,并传递/k交换机.这意味着命令完成后窗口将保留在屏幕上.您可以通过显式运行cmd.exe自己并在必要时传递适当的开关来改变该行为.

或者,您可以创建批处理文件的快捷方式(仍然是PIF文件),然后更改其属性以使其最小化.


Bru*_*lva 17

我知道的唯一方法是创建批处理文件的Windows快捷方式,然后将其属性更改为默认情况下运行最小化.

  • 比预期容易得多. (3认同)

小智 10

使用 PowerShell,您可以在不打开新实例的情况下最小化同一文件。

powershell -window minimized -command ""
Run Code Online (Sandbox Code Playgroud)

另外-window hidden-window normal可完全隐藏或恢复。


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


Ped*_* T. 7

如果您想为 Win-Run / 自动启动启动批处理,我在这里找到了不错的解决方案https://www.computerhope.com/issues/ch000932.htm & https://superuser.com/questions/364799/how-最小化运行命令提示

cmd.exe /c start /min myfile.bat ^& exit
Run Code Online (Sandbox Code Playgroud)
  • cmd.exe需要为开始是没有窗户命令可以分批外面来执行
  • /c = 启动完成后退出
  • ^& exit部件确保窗口关闭,即使批次没有以exit

但是,初始 cmd 仍然没有最小化。

  • 对我来说,通过 Windows 任务计划程序最小化启动批处理文件的唯一方法。 (2认同)

小智 7

“最小化”cmd 窗口的一种方法是使用以下方法减小控制台的大小...

echo DO NOT CLOSE THIS WINDOW
MODE CON COLS=30 LINES=2
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以将 COLS 减少到大约 18,将 LINES 减少到 1。优点是它可以在 WinPE、32 位或 64 位下运行,并且不需要任何 3rd 方实用程序。