繁体   English   中英

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

[英]How do I minimize the command prompt from my bat file

我有这个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-运行/自动启动,我发现我很好的解决方案在这里https://www.computerhope.com/issues/ch000932.htmhttps://superuser.com/questions/364799/how-到运行的指令提示符最小化

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

但是,初始cmd仍未最小化。

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

powershell -window minimized -command ""

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


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

另一个能够在任何时候(不仅在启动脚本时)最小化控制台窗口的免费第三方工具是带有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用于无数其他目的。

如果您在bat文件中键入此文本:

start /min blah.exe

一旦打开程序,它将立即最小化。 你只会看到它的短暂闪现,它会消失。

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

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

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

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

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

“最小化”cmd窗口的一种方法是使用诸如......之类的东西来减小控制台的大小。

echo DO NOT CLOSE THIS WINDOW
MODE CON COLS=30 LINES=2

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

您可以尝试运行脚本,如下所示

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

将文件另存为filename.js

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM