中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 22:40
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 怎么获取含有某文件夹所在的分区的盘符?
可打印版本  1,123 / 13
第1楼 gmy 发表于 2009-12-14 11:41
版主 发帖 392 积分 1,113
怎么获取含有某文件夹所在的分区的盘符?
子文件夹abc,有可能在c:\,有可能在d:\。。。。。,怎么判断含有abc文件夹的盘符,请使用FOR IN DO 完成。

形如:for...in..do echo %drv%

[ Last edited by gmy on 2009-12-14 at 11:43 ]
第2楼 mountvol 发表于 2009-12-14 12:35
初级用户 发帖 117 积分 186

用wmic可能会简单得多,不过开始运行起来肯定会慢不少。
另外大大你该不会是要的纯DOS下的东东吧.
第3楼 huahua0919 发表于 2009-12-14 12:37
银牌会员 发帖 780 积分 1,608
for /d %%i in (abc) do (echo %%~di)
第4楼 mountvol 发表于 2009-12-14 16:33
初级用户 发帖 117 积分 186
突然想到一个bug,上面的pushd 是不会回到当前目录的跟目录下的,如果没有特别设置过,那么是无法遍历所有C盘下的文件的,需要pushd c:\,需要把上面的call调用后面加上个\:

另外C盘的文件可能最多,所以把它丢到最后去查,如果要遍历所有的盘符,解决的方案貌似本版有不少。
第5楼 gmy 发表于 2009-12-15 10:48
版主 发帖 392 积分 1,113
3楼的不对
4楼的太长,能否一行完成?

可能题我没解释清楚,例如:
c:\abc 存在
e:\abc 不存在
e:\abc 不存在
f:\abc 存在
g:\abc 不存在

ECHO的结果应该 f: ,也就是通过搜索获得最后一个存在abc文件夹的盘符,要求一行完成。

命令提示:
for in do 嵌套 for in do 和 if exist

[ Last edited by gmy on 2009-12-15 at 11:00 ]
第6楼 mountvol 发表于 2009-12-15 13:55
初级用户 发帖 117 积分 186
这个,如果是根目录,那就太简单了。
如果非根目录,也不难:

如果是根目录:
第7楼 qinchun36 发表于 2009-12-15 14:55
高级用户 发帖 400 积分 609
实在是没明白楼主是什么意思,要不要查询子目录,比如 C:\WINDOWS\abc 这样的算不算???

如果只查根目录的话,

在命令行界面中


批处理中


[ Last edited by qinchun36 on 2009-12-16 at 17:30 ]
第8楼 mountvol 发表于 2009-12-15 19:12
初级用户 发帖 117 积分 186
用if判断的时候要注意区分文件和目录,不能直接if exist xxx,应该if exist xxx\nul
第9楼 gmy 发表于 2009-12-16 16:27
版主 发帖 392 积分 1,113
我需要带 if exist 的,不要带 pushd 命令的,另外,不需要搜索子目录,只搜索固定的一个 x:\123\abc ,只有盘符x是需要判断的,后面的\123\abc是一串固定的字符串。

[ Last edited by gmy on 2009-12-16 at 16:30 ]
第10楼 huahua0919 发表于 2009-12-16 17:19
银牌会员 发帖 780 积分 1,608
楼主的意思应该是获取全部盘符吧,提供两个方法如下:


第11楼 qinchun36 发表于 2009-12-16 17:32
高级用户 发帖 400 积分 609
老大,你到底要怎样啊啊啊啊啊啊,多谢8楼的指导,我改好了,你试试看说话啊啊啊啊啊

(楼上的也看看 8 楼的提示吧。。。)

[ Last edited by qinchun36 on 2009-12-16 at 17:34 ]
第12楼 huahua0919 发表于 2009-12-16 17:59
银牌会员 发帖 780 积分 1,608
愚昧了,受教了
第13楼 HAT 发表于 2009-12-16 19:38
版主 发帖 5,017 积分 9,023
葛老大要求一行代码搞定,是不是要用在什么DOS工具里面啊。
如果是的话,for /f、wmic、fsutil之类的,恐怕就不太适用了吧。
第14楼 gmy 发表于 2009-12-17 00:50
版主 发帖 392 积分 1,113
7楼试过,有效,谢谢qinchun36。

我要的正确答案是:
for %i in (c,d,e,f,g) do if exist %i:\123\abc\nul echo %i

虽然本人身为版主,但并不是什么都会,尤其对FOR命令不感冒,再次谢谢参与讨论的所有会员。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023