【问题标题】:Batch - minimize window while running a loop command (not start minimized)批处理 - 运行循环命令时最小化窗口(不开始最小化)
【发布时间】:2017-12-16 22:57:58
【问题描述】:

我想知道是否有办法在运行某个命令后最小化批处理窗口。我已经知道 start /min 和 START 最小化窗口的技巧,但是当它运行循环或超时时呢?

假设:

echo Hello!
timeout /t 100
:COMMAND TO MINIMIZE WINDOW WHILE TIMEOUT IS RUNNING

现在我在 bat 文件中调用一个 autoit 脚本来在命令运行时隐藏窗口:

WinSetState($application_name, "", @SW_HIDE) 

但我正在寻找可以直接在 .bat 文件中编码的纯批处理/powershell/vbs 解决方案。

感谢您的宝贵时间!

【问题讨论】:

    标签: powershell batch-file vbscript window minimize


    【解决方案1】:

    您还可以通过以下代码与 powershell 一起使用来最小化所有窗口。

    $shell = New-Object -ComObject "Shell.Application"
    $shell.minimizeall()
    

    检查: https://techibee.com/powershell/powershell-minimize-all-windows/1017

    【讨论】:

      【解决方案2】:

      您可以在运行期间最小化命令提示符,但您需要两个额外的脚本:windowModegetCmdPid.bat

      @echo off
      echo Hello!
      call getCmdPid >nul
      call windowMode -pid %errorlevel% -mode minimized
      
      timeout /t 100
      call getCmdPid >nul
      call windowMode -pid %errorlevel% -mode normal
      

      【讨论】:

        【解决方案3】:

        使用 PowerShell 的调用选项,不执行任何命令或脚本。

        @echo off & setlocal
        
        echo Hello!
        powershell -window minimized -command ""
        timeout /t 100
        powershell -window normal -command ""
        

        如果您愿意,也可以使用 FWIW,-window hidden

        【讨论】:

          【解决方案4】:

          这样就可以了。但是,您需要在超时之前运行最小化,因为它是成批的。现在,一旦窗口最小化,就会发生超时。此示例将在 ping 期间保留窗口,以便您可以看到它最小化。

          echo Hello!
          ping 127.0.0.1
          if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit
          timeout /t 100
          exit
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-10-21
            • 1970-01-01
            • 1970-01-01
            • 2011-04-19
            • 1970-01-01
            • 2013-07-04
            • 2011-09-12
            • 2010-09-22
            相关资源
            最近更新 更多