
Команда ONE CMD пытается закрыть все открытые окна, но не закрывает определенное окно.
Я зашел на superuser.com и нашел эту замечательную команду от PetSerAl
powershell -command "(New-Object -comObject Shell.Application).Windows() | foreach-object {$_.quit()}; Get-Process | Where-Object {$_.MainWindowTitle -ne \"\"} | stop-process"
эта команда закрывает все открытые окна, но мне нужно закрыть все окна, кроме одного.
Спасибо
решение1
Вы можете использовать тот же синтаксис в самой вашей команде. Если вы посмотрите на нее, она говорит что-то вроде "закройте все процессы, за исключением тех, где заголовок пуст"
Таким образом, вы можете просто добавить и условие И, чтобы сказать не закрывать, где заголовок пустой И заголовок является заголовком процесса, который вы хотите оставить открытым. В случае, если заголовок не фиксирован и он меняется (например, окна editot, они меняются вместе с именем файла, открытого в этот момент), вы можете изменить свойство, проверенное вместо MainWindowTitle, вы можете проверить ProcessName
что-то вроде этого, используя заголовок окна:
powershell -command "(New-Object -comObject Shell.Application).Windows() | foreach-object {$_.quit()}; Get-Process | Where-Object {($_.MainWindowTitle -ne \"\") -and ($_.MainWindowTitle -ne \"titleOfAppToKeepOpen\")} | stop-process"
что-то вроде этого, используя имя процесса:
powershell -command "(New-Object -comObject Shell.Application).Windows() | foreach-object {$_.quit()}; Get-Process | Where-Object {($_.MainWindowTitle -ne \"\") -and ($_.ProcessName -ne \"processToKeepOpen\")} | stop-process"