找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 37726|回复: 14

[其他] 【已解决】批处理如何一次关闭多个打开的文件夹窗口?

[复制链接]
发表于 2015-12-13 14:20:30 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-15 11:20 编辑

如题,最近工作经常打开大量的文件夹窗口。关闭起来非常闹心。
所以想搞个省事的。
但是不知道怎么办
哪位给提个醒?
发表于 2015-12-13 14:52:05 | 显示全部楼层
回复 1# chouxia
  1. tskill explorer
复制代码
 楼主| 发表于 2015-12-13 15:36:31 | 显示全部楼层
回复 2# ygqiang


    这么干桌面就over了啊。
总这么干系统受不了啊
发表于 2015-12-13 16:16:42 | 显示全部楼层
找到一个 PowerShell 方案, 但我没测试
来源 http://stackoverflow.com/questio ... ndows-in-powershell
  1. $a = (New-Object -comObject Shell.Application).Windows() |
  2. ? { $_.FullName -ne $null} |
  3. ? { $_.FullName.toLower().Endswith('\explorer.exe') }

  4. $a | % {  $_.Quit() }
复制代码
另有一个 AHK 方案, 测试通过, 不会 kill 掉 桌面, 因为只是关窗口, 并没有 kill explorer 的进程
来源 https://autohotkey.com/board/top ... l-explorer-windows/
  1. GroupAdd,ExplorerGroup, ahk_class CabinetWClass
  2. GroupAdd,ExplorerGroup, ahk_class ExploreWClass

  3. ; close all Explorer windows when Winkey x pressed
  4. #x::
  5.   if ( WinExist("ahk_group ExplorerGroup") )
  6.     WinClose,ahk_group ExplorerGroup
  7. return
复制代码

评分

参与人数 1技术 +1 收起 理由
chouxia + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-12-14 11:06:36 | 显示全部楼层
回复 4# aa77dd@163.com


    感谢
发表于 2016-7-15 12:20:41 | 显示全部楼层
vbs
  1. Set wins = CreateObject("Shell.Application").Windows
  2. If not IsNull(wins) Then
  3.     For Each w In wins
  4.         If InStr(LCase(w.FullName), "\explorer.exe") >0 Then w.Quit
  5.     Next
  6. End If
复制代码
发表于 2019-5-19 14:41:12 | 显示全部楼层
回复 6# pcl_test
hi,你这vbs是所有关闭,能不能是:给出路径(C:\back),检查打开文件夹在所给的路径内(多个打开文件夹,C:\back\*,C:\back\*\*,....),是才闭关,批处理最好,谢谢
发表于 2019-5-20 15:41:56 | 显示全部楼层
回复 7# yunyan100


    如你所说,自由决定关闭文件夹路径,遍历其下打开的所有文件夹,找到符合条件的窗口就关闭它。WIN10测试通过。
  1. @if (0)==(0) echo off
  2. set /p "strFolder=拖入遍历的文件夹 : "
  3. for /f "tokens=*" %%i in ('dir /s/b/ad %strFolder%') do (
  4.         cscript -nologo -e:jscript %~s0 CloseOpenWindow "%%~ni"
  5.         echo,
  6. )
  7. pause
  8. goto :EOF
  9. @end

  10. var func = WScript.Arguments(0);
  11. var str = WScript.Arguments(1);

  12. switch (func) {
  13.         case "CloseOpenWindow":
  14.                 CloseOpenWindow(str);
  15.                 break;
  16.         default:;
  17. }

  18. function CloseOpenWindow(str) {
  19.         WScript.Echo("当前传入参数为 : " + str);
  20.         var oShell = new ActiveXObject("WScript.Shell");
  21.         var ret = oShell.AppActivate(str);
  22.         WScript.Echo("打开状态 : " + ret);
  23.         if (ret) {
  24.                 /// 打开状态为真时,关闭它
  25.                 oShell.SendKeys("%{F4}");
  26.                 WScript.Echo("存在打开文件夹 " + str + " ,关闭之");
  27.         }
  28. }
复制代码
发表于 2019-5-20 15:43:59 | 显示全部楼层
如要将指定文件夹本身也关闭,对输入路径再作一次关闭调用即可。
发表于 2019-5-20 16:20:47 | 显示全部楼层
回复 9# amwfjhh
感谢帮助,我试了下,没反应,win10,
下面的我用,'dir/b/ad/s %%i\*,能用,但路径下的文件夹全部执行关闭,想改下,打开的文件夹,在路径下的才关闭
  1. for %%a in ("%cd%") do echo %%a>>%dp%\1.txt
  2. dir/ad "%cd%" >nul 2>nul&&cd..&&goto :ren
  3. (for /f "delims=" %%a in (%dp%\1.txt) do (setlocal enabledelayedexpansion&for %%i in (%%a) do (set "pat=%%~nxi"&call :ltty
  4. (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
复制代码
发表于 2019-5-20 16:38:27 | 显示全部楼层
回复 10# yunyan100


    你是怎么使用的?输入参数是你要遍历的文件夹,这个脚本关闭的是它子文件夹中有被打开的窗口。如图所示:

传入的路径下有一个文件夹,若其被打开,则遍历时会被探测到并被关闭。
发表于 2019-5-20 16:51:53 | 显示全部楼层
回复 11# amwfjhh
发表于 2019-5-20 16:58:03 | 显示全部楼层
回复 12# yunyan100


    奇怪,难道你那脚本宿主有问题……
发表于 2019-5-20 17:03:20 | 显示全部楼层
回复 13# amwfjhh
我选用你的保存bat效果怎样,可以用的话,在我bat文件里面,我前面发的是的意图,
发表于 2019-5-20 18:10:50 | 显示全部楼层
回复 14# yunyan100


    什么意思?引用这段脚本?如果是这样随便引用,这是讨论区,发出来就是提供参考的。
另,你运行无报错,但是却无法激活窗口,可能是安全软件禁用相关功能或者脚本宿主功能不全,可单独测试一下WScript.Shell的窗口激活功能是否能正常起用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 05:26 , Processed in 0.021853 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表