中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 08:41
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]判断一个文件夹是否打开 查看 1,215 回复 14
楼 主 [已结]判断一个文件夹是否打开 发表于 2009-02-09 15:49 ·  中国 湖北 武汉 电信
新手上路
积分 6
发帖 6
注册 2008-05-11 19:07
18年会员
UID 118436
性别 男
状态 离线
我想求一个脚本:
判断一个文件夹是否打开,如果是打开就执行程序a。如果没有打开就执行程序b.
比如我手动打开c:\1文件夹后,在任务管理器中进程是没有变化的,只会在应用程序里显示,所以不能用进程来判断。看能不能判断任务管理器中的应用程序来达到目的呢?或者其他思路,请高手讨论!

[ Last edited by HAT on 2009-2-14 at 13:16 ]
2 发表于 2009-02-09 16:37 ·  中国 广东 深圳 电信
初级用户
★★
积分 185
发帖 88
注册 2008-05-12 18:46
18年会员
UID 118511
性别 男
状态 离线
有同感,再补充一下,如果在DOS下也能判断就更好了,请高手们赐招!
3 发表于 2009-02-09 16:40 ·  美国 华盛顿州 金 雷德蒙德 Microsoft
初级用户
★★
积分 100
发帖 93
注册 2009-01-14 15:04
17年会员
UID 136661
性别 男
来自 湖南
状态 离线
关键在于在哪里获取这个文件夹打开或者关闭状态的信息,
4 发表于 2009-02-10 00:10 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
windows 下枚举所窗口的TITLE来判断

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
5 发表于 2009-02-10 00:21 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
tasklist taskkill 有判断窗口标题的参数,但是我从来就运行成功过

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
6 Re 5楼 发表于 2009-02-10 00:58 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
这个方法只对那些一个应用对应一个进程的情况有效(比如word)。不适用于楼主的问题。
7 发表于 2009-02-14 10:35 ·  中国 湖北 武汉 电信
新手上路
积分 6
发帖 6
注册 2008-05-11 19:07
18年会员
UID 118436
性别 男
状态 离线
谢谢!问题已经解决,结帖吧1
8 发表于 2009-02-14 12:52 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
把方法贴出来分亨一下嘛!
精简
=> 个人网志
9 发表于 2009-02-15 12:12 ·  中国 北京 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
那个openfiles命令?...
10 发表于 2009-02-15 18:28 ·  中国 湖北 武汉 电信
新手上路
积分 6
发帖 6
注册 2008-05-11 19:07
18年会员
UID 118436
性别 男
状态 离线
Dim objws,folders
Set objws=WScript.CreateObject("wscript.shell")
folders="c:\1"
strfolder=Split(folders,";",-1,1)
For Each f In strfolder
If objws.AppActivate(f)=True Then
objws.run "c:\1.txt"
Else

objws.run "c:\2.txt"

End If
Next
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
HAT +2 2009-02-15 18:39
11 发表于 2009-02-17 01:40 ·  中国 广东 广州 番禺区 电信
初级用户
★★
l i u s s
积分 73
发帖 101
注册 2008-09-17 00:21
17年会员
UID 125825
性别 男
来自 GZ
状态 离线
10楼

代码有误,不成功。可以试试:

Dim WshShell,FolderTitle
Set WshShell=WScript.CreateObject("Wscript.Shell")
FolderTitle="test"
If WshShell.AppActivate(FolderTitle)=True Then
WshShell.run "c:\test\a.txt"
Else
WshShell.run "c:\test\b.txt"
End If
12 发表于 2009-02-17 01:57 ·  中国 湖北 荆门 电信
新手上路
积分 6
发帖 6
注册 2008-05-11 19:07
18年会员
UID 118436
性别 男
状态 离线
Originally posted by newxso at 2009-2-17 01:40 AM:

代码有误,不成功。可以试试:

Dim WshShell,FolderTitle
Set WshShell=WScript.CreateObject("Wscript.Shell")
FolderTitle="test"
If WshShell.AppActivate( ...



这个我试了,运行正常啊
test打开则执行c:\test\a.txt
test没打开则执行c:\test\b.txt

你再试试啊,是VBS脚本,不是BAT。如果还是不行,请把
FolderTitle="test"
这里设置全路径,如FolderTitle="c:\test"
13 发表于 2009-02-17 02:59 ·  中国 广东 广州 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
这个跟本地文件夹设置有关
如果关闭了在标题栏显示完整路径,那么11楼是可行的,如果打开了,则不行
49206C6F766520796F752067757973 54656C3A3133383238343036373837
14 发表于 2009-02-17 09:30 ·  中国 广东 广州 番禺区 电信
初级用户
★★
l i u s s
积分 73
发帖 101
注册 2008-09-17 00:21
17年会员
UID 125825
性别 男
来自 GZ
状态 离线
没留意,因为我一直用的系统都是标题栏不显示完整路径的。如下方式就万无一失:

Dim WshShell
Set WshShell=WScript.CreateObject("Wscript.Shell")
If WshShell.AppActivate("test")=True or WshShell.AppActivate("C:\test")=True Then
WshShell.run "c:\test\a.txt"
Else
WshShell.run "c:\test\b.txt"
End If
15 发表于 2009-02-18 02:27 ·  中国 广东 广州 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
不知道wmi能不能枚举explorer的子进程标题
49206C6F766520796F752067757973 54656C3A3133383238343036373837
论坛跳转: