2017-07-12 5 views
3

Je me demande s'il existe un moyen de réduire une fenêtre de traitement par lots après avoir exécuté une certaine commande. Je connais déjà start/min et astuces pour START la fenêtre minimisée mais qu'en est-il pendant qu'il exécute une boucle ou un timeout?Batch - Réduit la fenêtre lors de l'exécution d'une commande de boucle (pas démarré minimisé)

Disons que:

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

je suis En ce moment, appeler un script AutoIt dans le fichier de chauve-souris pour masquer la fenêtre alors que la commande est en cours d'exécution avec:

WinSetState($application_name, "", @SW_HIDE) 

mais je suis à la recherche pour une solution pure batch/powershell/vbs qui peut être codée directement dans le fichier .bat.

Nous vous remercions de votre temps!

Répondre

2

Utilisez les options d'invocation de PowerShell, l'exécution d'aucune commande ou d'un script.

@echo off & setlocal 

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

FWIW, -window hidden est également disponible si vous le souhaitez.

+0

Solution très propre et simple. J'adore utiliser powershell en batch pour ajouter beaucoup plus de fonctionnalités! La fenêtre-cachée et puis de nouveau à la normale après la commande est parfaite. – Rakha

0

Cela fera l'affaire. Vous devez toutefois exécuter le minimum avant le délai d'expiration, car il s'agit d'un lot. Le délai d'expiration se produit maintenant une fois la fenêtre réduite. Cet exemple gardera la fenêtre pendant le ping afin que vous puissiez voir qu'il minimise.

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

Vous pouvez réduire l'invite de commande pendant la course, mais vous aurez besoin de deux scripts supplémentaires: windowMode et 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