批处理 - 在运行循环命令时最小化窗口(未启动最小化)

时间:2017-07-12 13:24:29

标签: powershell batch-file vbscript window minimize

我想知道在运行某个命令后是否有办法最小化批处理窗口。我已经知道开始/分钟以及最小化启动窗口的技巧但是当它运行循环或超时时呢?

让我们说:

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

现在我在bat文件中调用autoit脚本,以便在命令运行时隐藏窗口:

WinSetState($application_name, "", @SW_HIDE) 

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

感谢您的时间!

4 个答案:

答案 0 :(得分:4)

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

@echo off & setlocal

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

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

这样做。但是,您需要在超时之前运行最小化,因为它是批处理的。一旦窗口最小化,现在将发生超时。此示例将在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

答案 3 :(得分:0)

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