![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 01:46 |
共 47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]判断文件夹并遍历文件夹的内容 |
| 可打印版本 6,338 / 11 |
| 第1楼 qinqong | 发表于 2006-07-18 23:45 |
| 高级用户 发帖 148 积分 599 | |
|
[已结]判断文件夹并遍历文件夹的内容 我想判断给的的路径是文件还是文件夹,若是文件夹,就找出它里面的所有文件和子文件夹下的文件(只需要获得文件名就行),请高手帮忙?
[ Last edited by willsort on 2006-7-22 at 19:33 ] |
|
| 第2楼 poyexinghun | 发表于 2006-07-19 03:41 |
| 新手上路 发帖 4 积分 12 来自 襄阳城边看风景! | |
|
这是我刚才才写的,不知道是不是你表达的意思,如不是请谅解!
如果合意,看看有什么不足,帮忙改一下,共同学习! set input= echo 初始化变量为空 set /p input= echo 需要用户输入文件夹名 if %input% =='' exit echo 如果用户输入为空则退出 dir /b/s %input% >c.txt echo 查找文件夹的完整路径写入文件 for /f %%i in (c.txt) do dir %%i >c.txt echo 将查看子目录的信息写入到文件 more c.txt echo 浏览文件信息即子目录信息 del c.txt echo 删除文件 pause echo 退出 [ Last edited by poyexinghun on 2006-7-19 at 04:13 ] |
|
| 第3楼 qinqong | 发表于 2006-07-19 10:18 |
| 高级用户 发帖 148 积分 599 | |
|
谢谢了,我很长时间没用DOS了,手有点生了。
|
|
| 第4楼 namejm | 发表于 2006-07-19 13:09 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
2楼的并不能解决问题,并且echo及其之后的内容是错误的注释格式。
以下代码在XP下测试通过。 [ Last edited by namejm on 2006-7-20 at 11:04 ] |
|
| 第5楼 poyexinghun | 发表于 2006-07-19 13:39 |
| 新手上路 发帖 4 积分 12 来自 襄阳城边看风景! | |
|
谢谢!
小弟初学,不知道规范,以后还请各位多多指教! 运行了兄的代码,提点见意!(讨论学习吗?) 兄的代码可行性比较好,就是灵活性不是很好。 例: e:\downloads\miusc\mp3 如果只输入mp3就能查到文件夹的所有信息不是更好? 不知兄认为如何? |
|
| 第6楼 namejm | 发表于 2006-07-19 13:52 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
Re poyexinghun:
呵呵,4楼的代码只是应楼主的要求而写,能满足楼主的需要就够了,我不能画蛇添足地来一些楼主没提到的功能啊。 如果想查找文件夹的一些信息,也不是不能办到,不过有些可能做不到。如果你想要的话,请说明你想显示文件夹的什么信息,看CMD或者我能不能办到:) 代码的规范问题,初学的时候都会犯一些错误,以前我也好不到哪里去,多写一些就顺手了。呵呵,共同进步吧。 |
|
| 第7楼 willsort | 发表于 2006-07-19 14:08 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re namejm:
不错的代码!不过再提几点个人意见。 1、根据程序的结构看,&& goto list 和 :list 标签是可以省略的。 2、根路径可以不用设置,因为已经是当前路径了。 3、获取目录名可以联合使用 /r /d ,它不会列出指定的根路径;或者使用%%~fi,这样就不用使用 set 来截去路径中的\.了。 这一点楼主的描述有问题,让人无法确定是想获得文件还是文件夹的名字,我认为前者的可能性大些,也就是说“文件夹”是“文件名”的讹误。 Re poyexinghun: 只要当前路径是e:\downloads\miusc,那么输入mp3后,namejm熊的代码是可以获得mp3下所有子文件夹信息的。 |
|
| 第8楼 namejm | 发表于 2006-07-19 19:37 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
Re willsort:
1、&& goto list 和 :list 确实可以省略,当初只是按思路把想到的都写出来,没考虑到代码的精简; 2、当初写这段代码的时候,想到应该把它放到任意位置都可以对指定的文件夹进行操作,而不仅仅对bat所在的文件夹进行操作,所以,我觉得对根路径还是要进行判断,以免错误地输入了根路径; 3、发现用dir来操作更容易一点,于是放弃了for语句,不再考虑是否要截取\.的问题了; 改动后的代码能生成绝对路径和相对路径,可任意选择适合的结果。 |
|
| 第9楼 namejm | 发表于 2006-07-20 10:39 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
呵呵,当时看得潦草,现在再认真看了一下楼主的描述,原来是要找文件夹下的所有文件(包括子文件夹下的)而不是文件夹,我理解反了:(
要实现这个目的的话,把dir /ad改成dir /a-d就可以了,但是楼主只要文件名就够了,不需要相对路径,这个得再想个法子,可能还是不能用dir而用for中的%~fi了,我再想想。 [ Last edited by namejm on 2006-7-20 at 10:43 ] |
|
| 第10楼 namejm | 发表于 2006-07-20 11:03 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
稍作改动,应该符合楼主的要求了。
|
|
| 第11楼 qinqong | 发表于 2006-07-21 12:46 |
| 高级用户 发帖 148 积分 599 | |
|
问题已解决,多谢兄弟们了
|
|
| 第12楼 jubailan | 发表于 2007-06-18 22:46 |
| 新手上路 发帖 6 积分 14 | |
|
4 楼 的不错阿,学到了挺多东西
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |