标题: [其他] 【已解决】批处理如何一次关闭多个打开的文件夹窗口? [打印本页]
作者: chouxia 时间: 2015-12-13 14:20 标题: 【已解决】批处理如何一次关闭多个打开的文件夹窗口?
本帖最后由 pcl_test 于 2016-7-15 11:20 编辑
如题,最近工作经常打开大量的文件夹窗口。关闭起来非常闹心。
所以想搞个省事的。
但是不知道怎么办
哪位给提个醒?
作者: ygqiang 时间: 2015-12-13 14:52
回复 1# chouxia 复制代码
作者: chouxia 时间: 2015-12-13 15:36
回复 2# ygqiang
这么干桌面就over了啊。
总这么干系统受不了啊
作者: aa77dd@163.com 时间: 2015-12-13 16:16
找到一个 PowerShell 方案, 但我没测试
来源 http://stackoverflow.com/questio ... ndows-in-powershell- $a = (New-Object -comObject Shell.Application).Windows() |
- ? { $_.FullName -ne $null} |
- ? { $_.FullName.toLower().Endswith('\explorer.exe') }
-
- $a | % { $_.Quit() }
复制代码
另有一个 AHK 方案, 测试通过, 不会 kill 掉 桌面, 因为只是关窗口, 并没有 kill explorer 的进程
来源 https://autohotkey.com/board/top ... l-explorer-windows/- GroupAdd,ExplorerGroup, ahk_class CabinetWClass
- GroupAdd,ExplorerGroup, ahk_class ExploreWClass
-
- ; close all Explorer windows when Winkey x pressed
- #x::
- if ( WinExist("ahk_group ExplorerGroup") )
- WinClose,ahk_group ExplorerGroup
- return
复制代码
作者: chouxia 时间: 2015-12-14 11:06
回复 4# aa77dd@163.com
感谢
作者: pcl_test 时间: 2016-7-15 12:20
vbs- Set wins = CreateObject("Shell.Application").Windows
- If not IsNull(wins) Then
- For Each w In wins
- If InStr(LCase(w.FullName), "\explorer.exe") >0 Then w.Quit
- Next
- End If
复制代码
作者: yunyan100 时间: 2019-5-19 14:41
回复 6# pcl_test
hi,你这vbs是所有关闭,能不能是:给出路径(C:\back),检查打开文件夹在所给的路径内(多个打开文件夹,C:\back\*,C:\back\*\*,....),是才闭关,批处理最好,谢谢
作者: amwfjhh 时间: 2019-5-20 15:41
回复 7# yunyan100
如你所说,自由决定关闭文件夹路径,遍历其下打开的所有文件夹,找到符合条件的窗口就关闭它。WIN10测试通过。- @if (0)==(0) echo off
- set /p "strFolder=拖入遍历的文件夹 : "
- for /f "tokens=*" %%i in ('dir /s/b/ad %strFolder%') do (
- cscript -nologo -e:jscript %~s0 CloseOpenWindow "%%~ni"
- echo,
- )
- pause
- goto :EOF
- @end
-
- var func = WScript.Arguments(0);
- var str = WScript.Arguments(1);
-
- switch (func) {
- case "CloseOpenWindow":
- CloseOpenWindow(str);
- break;
- default:;
- }
-
- function CloseOpenWindow(str) {
- WScript.Echo("当前传入参数为 : " + str);
- var oShell = new ActiveXObject("WScript.Shell");
- var ret = oShell.AppActivate(str);
- WScript.Echo("打开状态 : " + ret);
- if (ret) {
- /// 打开状态为真时,关闭它
- oShell.SendKeys("%{F4}");
- WScript.Echo("存在打开文件夹 " + str + " ,关闭之");
- }
- }
复制代码
作者: amwfjhh 时间: 2019-5-20 15:43
如要将指定文件夹本身也关闭,对输入路径再作一次关闭调用即可。
作者: yunyan100 时间: 2019-5-20 16:20
回复 9# amwfjhh
感谢帮助,我试了下,没反应,win10,
下面的我用,'dir/b/ad/s %%i\*,能用,但路径下的文件夹全部执行关闭,想改下,打开的文件夹,在路径下的才关闭- for %%a in ("%cd%") do echo %%a>>%dp%\1.txt
- dir/ad "%cd%\" >nul 2>nul&&cd..&&goto :ren
- (for /f "delims=" %%a in (%dp%\1.txt) do (setlocal enabledelayedexpansion&for %%i in (%%a) do (set "pat=%%~nxi"&call :ltty
- (if "!pat!" neq "!pan!" if "!pat!" neq "" ren %%i "!pan!"||for /f "tokens=*" %%s in ('dir/b/ad/s %%i\*') do (mshta "javascript:wnds=new ActiveXObject('Shell.Application').windows(); for (i=0; i<wnds.Count; i++) {w=wnds(i); w && w.document && w.document.folder && '%%~nxs'==w.document.folder.title && w.quit();} close();" && ren %%i "!pan!")))&endlocal)&del /f/s/q/a %dp%\1.txt)>nul 2>nul
复制代码
作者: amwfjhh 时间: 2019-5-20 16:38
回复 10# yunyan100
你是怎么使用的?输入参数是你要遍历的文件夹,这个脚本关闭的是它子文件夹中有被打开的窗口。如图所示:
传入的路径下有一个文件夹,若其被打开,则遍历时会被探测到并被关闭。
作者: yunyan100 时间: 2019-5-20 16:51
回复 11# amwfjhh
作者: amwfjhh 时间: 2019-5-20 16:58
回复 12# yunyan100
奇怪,难道你那脚本宿主有问题……
作者: yunyan100 时间: 2019-5-20 17:03
回复 13# amwfjhh
我选用你的保存bat效果怎样,可以用的话,在我bat文件里面,我前面发的是的意图,
作者: amwfjhh 时间: 2019-5-20 18:10
回复 14# yunyan100
什么意思?引用这段脚本?如果是这样随便引用,这是讨论区,发出来就是提供参考的。
另,你运行无报错,但是却无法激活窗口,可能是安全软件禁用相关功能或者脚本宿主功能不全,可单独测试一下WScript.Shell的窗口激活功能是否能正常起用。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |