批处理 - 最小化 window while 运行 循环命令(不开始最小化)

Batch - minimize window while running a loop command (not start minimized)

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

假设:

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

现在我在 bat 文件中调用一个 autoit 脚本来隐藏 window 而命令是 运行 :

WinSetState($application_name, "", @SW_HIDE) 

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

感谢您的宝贵时间!

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

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

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

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

@echo off & setlocal

echo Hello!
powershell -window minimized -command ""
timeout /t 100
powershell -window normal -command ""

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

您还可以通过在 powershell 中使用以下代码来最小化所有 windows。

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

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