[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何根据指定的关键词关闭窗口?

请教各位老师一个问题.....如何用批处理命令,,,关闭包含某个关键词的所有窗口,,,但排除这个关键词的exe,,,,其他都关闭....           比如关键词是:   你好            电脑里可能运行打开着包含     *你好*.txt   或者文件夹,,,或者说浏览器窗口也包含这个关键词.......想把其他都关闭掉,,,,,,只保留     *你好*.exe      谢谢

回复 4# Nsqs


   是的老师,,,,排除  *你好*.exe,,,,,关闭其他的txt...浏览器...文件夹等  标题中含有 *你好* 的窗口   这个对我来说太难了,,,实在没办法写出来,,,,不知道有办法解决不

TOP

本帖最后由 Nsqs 于 2023-10-19 07:35 编辑

回复 2# wanghan519


在我的测试发现中似乎gps命令的mainwindowtitle属性仅返回被激活过的该进程,举例
如果该进程有10个,其中有9个是闲置,未被用户激活过,那么只返回最后那一个被激活的窗口标题,其余9个都返回空
比如
(Get-Process).MainWindowTitle|?{$_ -match 'test'}
还有如果想获取PowerShell的标题,以window11为例,可能还同时存在,设置不同的系统,比如有的人用的是WindowsTermina
那么用gps pwsh显然就获取不到标题了
(gps pwsh).MainWindowTitle
还得进行更多细节上的判断比如换成WindowsTerminal
(gps WindowsTerminal).MainWindowTitle
才能获取,只能说这个方法并不不实用

另外Get-Process有个方法叫CloseMainWindow() 也可以不用调用stop-process

算是看懂楼主需求了,只排除进程某个窗口,关闭该进程其他窗口(不包含被排除窗口)...

TOP

  1. $word=New-Object -ComObject Word.Application
  2. $word.Tasks['test'].Close()
  3. $word.Quit()
复制代码
这样应该是最准确的,不会直接结束主进程

TOP

不够谨慎,请小心测试
  1. Get-Process | ?{$_.MainWindowTitle -imatch ".*你好(?!.*\.exe$)"} | %{Stop-Process $_.Id}
复制代码

TOP

返回列表