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

[问题求助] [已解决]VBS如何判断是否打开了某文件夹并关闭之?

[复制链接]
发表于 2011-7-11 11:05:08 | 显示全部楼层 |阅读模式
本帖最后由 q115643492 于 2011-7-12 10:13 编辑

有一需求,判断是否打开了D盘中的文件夹,比如D:\或D:\a,地址栏为显示全路径。有可能打开了多个满足条件的文件夹。如果打开了,就关闭这些文件夹(不要使用结束explorer)。没有就跳转到下面的操作。有点急用。请好心人帮帮!
思路:
1.获取所有打开的窗体名
2.判断窗体名是否包含D:\字符
3.关闭符合条件的窗体
就是不会写这些代码,还请指点!

评分

参与人数 1PB +2 收起 理由
batman + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-7-11 11:37:56 | 显示全部楼层
为什么不要把exporer.exe kill掉啊??
发表于 2011-7-11 12:09:44 | 显示全部楼层
1# q115643492 这么复杂,看看判断进程标题能否得到了咯
发表于 2011-7-11 12:46:17 | 显示全部楼层

'Author: Demon
'Website: http://demon.tw
'Date: 2011/7/11
Option Explicit
Dim shell, window, path
Set shell = CreateObject("Shell.Application")
For Each window In shell.Windows
    If window = "Windows Explorer" Then
        path =  Mid(window.LocationURL, 9)
        Select Case path
            Case "D:/", "D:/a"
                window.Quit
        End Select
    End If
Next
 楼主| 发表于 2011-7-11 12:56:41 | 显示全部楼层
4# Demon

好象没有效果!
发表于 2011-7-11 13:34:49 | 显示全部楼层
4# Demon

好象没有效果!
q115643492 发表于 2011-7-11 12:56

上面的代码是在Windows 7中测试的,刚刚在Windows 2003中测试了一下,发现和Windows 7不太一样。

Windows 7下窗口可以分成Windows Internet Explorer、Windows Explorer两种,前者是IE窗口,后者是Explorer窗口,但是在Windows 2003中没有作区分,只有Windows Internet Explorer一种窗口,所以上面代码的If条件不成立。

既然这样,就不加If判断了


'Author: Demon
'Website: http://demon.tw
'Date: 2011/7/11
Option Explicit
Dim shell, window, path
Set shell = CreateObject("Shell.Application")
For Each window In shell.Windows
    path =  Mid(window.LocationURL, 9)
    Select Case path
         Case "D:/", "D:/a"
            window.Quit
    End Select
Next

评分

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

查看全部评分

 楼主| 发表于 2011-7-11 13:47:11 | 显示全部楼层
6# Demon
恩,这样就可以用了,但是只能关闭d:\和d:\a这2个文件夹。
我的意思是需要判断是否打开了D盘中的文件夹,比如D:\或D:\a,只是举例为这2个文件夹,其实文件夹名可能是未知的,还有可能不只这两个,我的想法是:
1.获取所有打开的窗体名
2.判断窗体名是否包含D:\字符
3.关闭符合条件的窗体
看能不能用代码实现
发表于 2011-7-11 13:53:11 | 显示全部楼层
6# Demon
恩,这样就可以用了,但是只能关闭d:\和d:\a这2个文件夹。
我的意思是需要判断是否打开了D盘中的文件夹,比如D:\或D:\a,只是举例为这2个文件夹,其实文件夹名可能是未知的,还有可能不只这两个,我的想 ...
q115643492 发表于 2011-7-11 13:47

我很好奇你的VBS到底是什么水平,我的回答到此为止。
 楼主| 发表于 2011-7-11 16:06:31 | 显示全部楼层
就是不懂才来问滴撒,不要欺负象我这种菜鸟新手。
不过还是谢谢你的几次回答!
发表于 2011-7-11 16:28:25 | 显示全部楼层
本帖最后由 Demon 于 2011-7-11 19:20 编辑
就是不懂才来问滴撒,不要欺负象我这种菜鸟新手。
不过还是谢谢你的几次回答!
q115643492 发表于 2011-7-11 16:06

都到这份上了还不会自己改,我也没什么好说的。正如powerbat所说,如果你什么都不懂,请在提问时注明。
发表于 2011-7-11 21:50:07 | 显示全部楼层
本帖最后由 broly 于 2011-7-11 21:52 编辑
上面的代码是在Windows 7中测试的,刚刚在Windows 2003中测试了一下,发现和Windows 7不太一样。

Windows 7下窗口可以分成Windows Internet Explorer、Windows Explorer两种,前者是IE窗口,后者是Explorer窗口 ...
Demon 发表于 2011-7-11 13:34



  1. Select Case path
  2. Case "D:/", "D:/a", "文件夹1", "文件夹2", "以此类推"
  3.   window.Quit
  4. End Select
复制代码
发表于 2011-7-11 23:06:54 | 显示全部楼层
4# Demon

Demon,下次把代码用[CODE] 括起来吧,方便别人复制代码
 楼主| 发表于 2011-7-12 10:13:41 | 显示全部楼层
呵呵。谢谢大家,不好意思,费心了!
发表于 2011-7-12 11:14:08 | 显示全部楼层
本帖最后由 zm900612 于 2011-7-12 11:15 编辑

批处理的话可以:
  1. move 文件夹 %cd% %cd%>nul||echo %cd%正被使用
复制代码
不知在vbs中如何套用

哦,我看错题意了...
发表于 2011-7-12 12:30:03 | 显示全部楼层
Select Case path
Case "D:/", "D:/a", "文件夹1", "文件夹2", "以此类推"
  window.Quit
End Select
broly 发表于 2011-7-11 21:50

用[code]括起来如何修改颜色?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 13:14 , Processed in 0.023301 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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