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

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

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

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

有一个非常有趣的方式来执行脚本最小化,使他重新启动自己最小化。 以下是放在脚本开头的代码:

 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设置为1set IS_MINIMIZED=1
  2. 脚本使用start命令&& start "" /min "%~dpnx0" %*自身的副本&& 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

使用start命令,使/min开关运行最小化。 例如:

 start /min C:\Ruby192\bin\setrbvars.bat 

由于您已将批处理文件指定为参数,因此将运行命令处理器,并传递/k开关。 这意味着命令完成后窗口将保持在屏幕上。 您可以通过自己显式运行cmd.exe并根据需要传递相应的开关来更改此行为。

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

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

如果你想开始Win-Run / autostart批处理,我发现我很好的解决方案在这里https://www.computerhope.com/issues/ch000932.htm&https://superuser.com/questions/364799/how-到运行的指令提示符最小化

 cmd.exe /c start /min myfile.bat ^& exit 
  • cmd.exe是必需的,因为start是没有可以在批处理外执行的Windows命令
  • /c =开始完成后退出
  • 即使批次不以exit结束, ^& exit部分也可确保窗口关闭

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

我不知道是否有一种方法可以最小化一个窗口从命令提示符一旦打开,但下面的文章建议在新的,预先最小化的窗口中产生实际的过程作为一个孩子。

http://www.pcreview.co.uk/forums/command-prompt-tool-minimize-command-window-after-starts-t2037434.html

你可以尝试运行一个脚本如下

 var WindowStyle_Hidden = 0 var objShell = WScript.CreateObject("WScript.Shell") var result = objShell.Run("cmd.exe /c setrbvars.bat", WindowStyle_Hidden) 

将文件保存为filename.js

如果你在你的bat文件中输入这个文本。

 start blah.exe /min 

它会立即尽量减少一旦它打开该计划。 你只会看到它的一瞬间,它会消失。

一种选择是找到可以更改当前正在运行的控制台窗口的窗口状态并从批处理脚本中调用它的各种实用程序之一。 您可以将其作为批处理脚本中的第一件来运行。 这里有两个这样的工具:

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

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

还有另一个免费的第三方工具,可以随时(不仅在启动脚本的时候)最小化控制台窗口,就是带有TWAPI扩展的Tcl:

 echo package require twapi;twapi::minimize_window [twapi::get_console_window] | tclkitsh - 

这里的tclkitsh.exe位于PATH中,是tclkit-cli-*-twapi-*.exe文件之一,可从sourceforge.net/projects/twapi/files/Tcl二进制文件/ Tclkits下载到TWAPI / 。 我更喜欢在Bernard Chen的回答中提到的更轻的min.exe ,因为我已经为无数其他目的使用了TWAPI。

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

另一个可以正常使用的选项是使用ConEmu,请参阅http://conemu.github.io/en/ConEmuArgs.html

 "C:\Program Files\ConEmu\ConEmu64.exe" -min -run myfile.bat