标题: [文件操作] 批处理如何根据指定的关键词关闭窗口? [打印本页]
作者: soykoa 时间: 2023-10-19 03:12 标题: 批处理如何根据指定的关键词关闭窗口?
请教各位老师一个问题.....如何用批处理命令,,,关闭包含某个关键词的所有窗口,,,但排除这个关键词的exe,,,,其他都关闭.... 比如关键词是: 你好 电脑里可能运行打开着包含 *你好*.txt 或者文件夹,,,或者说浏览器窗口也包含这个关键词.......想把其他都关闭掉,,,,,,只保留 *你好*.exe 谢谢
作者: wanghan519 时间: 2023-10-19 04:19
不够谨慎,请小心测试- Get-Process | ?{$_.MainWindowTitle -imatch ".*你好(?!.*\.exe$)"} | %{Stop-Process $_.Id}
复制代码
作者: Nsqs 时间: 2023-10-19 06:04
- $word=New-Object -ComObject Word.Application
- $word.Tasks['test'].Close()
- $word.Quit()
复制代码
这样应该是最准确的,不会直接结束主进程
作者: Nsqs 时间: 2023-10-19 06:25
本帖最后由 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
算是看懂楼主需求了,只排除进程某个窗口,关闭该进程其他窗口(不包含被排除窗口)...
作者: soykoa 时间: 2023-10-19 10:57
回复 4# Nsqs
是的老师,,,,排除 *你好*.exe,,,,,关闭其他的txt...浏览器...文件夹等 标题中含有 *你好* 的窗口 这个对我来说太难了,,,实在没办法写出来,,,,不知道有办法解决不
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |