![]() |
中国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 |