So schließen Sie alle geöffneten Fenster außer einer App mit EINEM CMD-Befehl.

So schließen Sie alle geöffneten Fenster außer einer App mit EINEM CMD-Befehl.

EIN CMD-Befehl möchte alle geöffneten Fenster schließen, hat aber ein bestimmtes Fenster nicht geschlossen.

Ich suchte in superuser.com und bekam diesen wunderbaren Befehl von PetSerAl

powershell -command "(New-Object -comObject Shell.Application).Windows() | foreach-object {$_.quit()}; Get-Process | Where-Object {$_.MainWindowTitle -ne \"\"} | stop-process" 

der obige Befehl schließt alle geöffneten Fenster, aber ich muss alle Fenster außer einem schließen.

Danke

Antwort1

Sie können die gleiche Syntax auch in Ihrem Befehl selbst verwenden. Wenn Sie sich das genauer ansehen, steht dort etwa „Schließen Sie alle Prozesse, außer denen, bei denen der Titel leer ist“.

Sie können also einfach eine UND-Bedingung hinzufügen, um anzugeben, dass nicht geschlossen werden soll, wenn der Titel leer ist UND der Titel der des Prozesses ist, den Sie geöffnet halten möchten. Falls der Titel nicht festgelegt ist und sich ändert (wie beispielsweise das Fenster eines Editots, das sich mit dem Namen der in diesem Moment geöffneten Datei ändert), können Sie die Eigenschaft „checked“ ändern. Statt MainWindowTitle können Sie nach ProcessName suchen.

etwa so, unter Verwendung des Fenstertitels:

powershell -command "(New-Object -comObject Shell.Application).Windows() | foreach-object {$_.quit()}; Get-Process | Where-Object {($_.MainWindowTitle -ne \"\") -and ($_.MainWindowTitle -ne \"titleOfAppToKeepOpen\")} | stop-process" 

etwa wie folgt unter Verwendung des Prozessnamens:

powershell -command "(New-Object -comObject Shell.Application).Windows() | foreach-object {$_.quit()}; Get-Process | Where-Object {($_.MainWindowTitle -ne \"\") -and ($_.ProcessName -ne \"processToKeepOpen\")} | stop-process" 

verwandte Informationen