2017-07-12 6 views
3

Ich frage mich, ob es eine Möglichkeit gibt, ein Stapelverarbeitungsfenster nach dem Ausführen eines bestimmten Befehls zu minimieren. Ich kenne bereits start/min und Tricks, um das Fenster minimiert zu starten, aber was ist, während es eine Schleife oder Timeout ausführt?Batch - Fenster beim Ausführen eines Schleifenbefehls minimieren (nicht minimiert starten)

Sagen wir:

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

Gerade jetzt ich in der BAT-Datei ein autoit Skript bin ruft das Fenster zu verstecken, während der Befehl mit ausgeführt wird:

WinSetState($application_name, "", @SW_HIDE) 

, aber ich bin auf der Suche für eine reine Batch/Powershell/Vbs-Lösung, die direkt in der .bat-Datei codiert werden kann.

Vielen Dank für Ihre Zeit!

Antwort

2

Verwenden Powershell Aufrufoptionen, kein Befehl oder ein Skript ausgeführt wird.

@echo off & setlocal 

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

FWIW, ist -window hidden auch wenn Sie es wünschen zur Verfügung.

+0

Sehr saubere Lösung und einfach. Ich liebe es, Powershell im Batch zu verwenden, um viel mehr Funktionalität hinzuzufügen! Das Fenster wird ausgeblendet und dann wieder normal, nachdem der Befehl perfekt ist. – Rakha

0

Dies wird ausreichen. Sie müssen das Minimieren jedoch vor dem Timeout ausführen, da es sich im Stapelbetrieb befindet. Timeout wird jetzt auftreten, sobald das Fenster minimiert ist. In diesem Beispiel wird das Fenster während des Pings beibehalten, damit Sie sehen können, dass es minimiert wird.

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

Sie können den Befehl minimieren während des Laufes prompt auf, aber Sie werden zwei zusätzliche Skripte müssen: windowMode und 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 
Verwandte Themen