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

[原创] VBS关闭重复的文件夹窗口

[复制链接]
发表于 2014-9-25 01:09:11 | 显示全部楼层 |阅读模式
楼主的工作需要频繁切换文件夹,楼主的习惯又很差,经常是一个又一个的 Win+E 然后粘贴路径...于是一个小时下来,打开了 20+ 个窗口,其中有许多是相同的
xp 的关窗口不是很便捷(win7 可以鼠标悬停任务栏,在预览图上中键关闭窗口),所以写了个简单的 vbs,一键逆序关闭相同路径的文件夹
  1. Set Shell = CreateObject("Shell.Application")
  2. Set Dict = CreateObject("Scripting.Dictionary")
  3. Set Wins = Shell.Windows

  4. For i=Wins.Count-1 To 0 step -1
  5.     If Instr(LCase(Wins(i).FullName),"\explorer.exe") Then
  6.             If Dict.Exists(Wins(i).LocationURL) Then
  7.                     Wins(i).Quit
  8.             Else
  9.                     Dict.Add Wins(i).LocationURL,True
  10.             End If
  11.         End If
  12. Next
复制代码
---------------------------------------------------------------------------------
题外话:
配合 ahk 的热字符串功能,可以实现在运行窗口输入特定字符串并回车时清理重复窗口,节选相应部分如下:
  1. #IfWinActive, 运行, 请键入程序、文件夹、文档或 Internet 资源的名称,Windows 将为您打开它。

  2. ::cls::
  3. ::clean::
  4. Run, "关闭重复窗口.vbs",,,PID
  5. traytip,, 关闭重复窗口.vbs::%PID%
  6. return
复制代码
其实纯 ahk 就可以实现,但代码会很庞杂,而且 ahk 的异步运行貌似做得不是很好,有时会卡其他部分的代码。

评分

参与人数 1技术 +1 收起 理由
yu2n + 1 感谢分享

查看全部评分

发表于 2014-9-25 08:07:55 | 显示全部楼层
不错,简单有效。
WinXP 有个笨办法,在任务栏分组的[列表]中,选择重复路径窗口项目,按右键选[关闭]。
据说 Q-Dir、TC 比 Explorer 好用。
发表于 2014-9-25 08:40:30 | 显示全部楼层
楼主的工作需要频繁切换文件夹,楼主的习惯又很差,经常是一个又一个的 Win+E 然后粘贴路径

Man, that's why we're using Total Commander.
 楼主| 发表于 2014-9-25 17:14:54 | 显示全部楼层
回复 2# yu2n


    还是略嫌麻烦,win7 只要点一次中键就行


回复 3# Batcher


    试用过一阵子就放弃了,感觉 tc 的上手难度更甚 vim...而且界面实在奇丑无比,简直是 95 的风格
    现在的配置是 locate32+listary+ahk+杂七杂八的各色工具,成熟的软件配合自写脚本,操作起来也挺顺手
    之所以不用 everything,是因为它的原理是读取后删除 usn 日志,单位电脑没有管理员权限无法执行,而且 locate32 还支持网络路径索引
发表于 2014-9-25 17:47:18 | 显示全部楼层
本帖最后由 523066680 于 2014-9-25 17:51 编辑

回复 4# CrLf

轮子收下了。

     ZM同学,写一个CrLf版的explorer吧!
 楼主| 发表于 2014-9-25 19:48:23 | 显示全部楼层
回复 5# 523066680


    行,代码在这里,你要觉得靠谱就带走吧...
  1. <html>
  2. <head>
  3.         <title>CrLf版的explorer</title>
  4.         <script>
  5.         function changeSrc(e,obj){
  6.                 if(e.keyCode!=13)return
  7.                 var value = obj.value
  8.                 if(value.search(/file:/i)>=0)value = 'file://'+value
  9.                 value = value.replace(/:$/,':\\')
  10.                 document.getElementById("iframe").src = obj.value = value
  11.         }
  12.         </script>
  13. </head>

  14. <body bgcolor="white">
  15.         地址:<input type="text" id="src" style="width:500" onkeydown="changeSrc(window.event,this);" value="c:">
  16.         <br />
  17.         <iframe id="iframe" style="width:100%;height:90%" src="file://c:"></iframe>
  18. </body>
  19. </html>
复制代码
发表于 2014-9-25 19:50:33 | 显示全部楼层
回复 6# CrLf


    我还想说你要是写得好我就第一个donate,还好没说出来。
 楼主| 发表于 2014-9-25 19:51:31 | 显示全部楼层
本帖最后由 CrLf 于 2014-9-25 19:53 编辑

回复 7# 523066680


    你已经说粗来了...
    话说谁知道怎么操作 <iframe src=file://xxxxx>...</iframe> 里的文件和文件夹?比如枚举、选中、复制、移动、排序之类的?
    所说环境仅限于 hta
发表于 2014-11-7 17:04:07 | 显示全部楼层
本帖最后由 yu2n 于 2015-5-6 22:19 编辑

Mark.
怎样用bat重启explorer资源管理器不关闭打开的文件夹呢?
http://www.bathome.net/thread-32834-1-1.html


【更新】坛友 CrLf 提醒explorer打开路径可用
  1. oShell.explore strURL
复制代码
VBS代码如下:

  1. Call RestartExplorer()
  2. Function RestartExplorer()
  3.   Dim arrURL(), strURL, oShell, oWin, n
  4.   n = -1
  5.   Set oShell = CreateObject("Shell.Application")
  6.   For Each oWin In oShell.Windows
  7.     If Instr(1, oWin.FullName, "\explorer.exe", vbTextCompare) Then
  8.       n = n + 1
  9.       ReDim Preserve arrURL(n)
  10.       arrURL(n) = oWin.LocationURL
  11.     End If
  12.   Next
  13.   CreateObject("WScript.Shell").run "tskill explorer", 0, True
  14.   For Each strURL In arrURL
  15.     oShell.Explore strURL
  16.   Next
  17. End Function
复制代码
参考:VBS关闭重复的文件夹窗口
http://www.bathome.net/thread-32053-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 00:29 , Processed in 0.022352 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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