![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-13 07:42 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS学习入门 & 精彩文章 (教学室) » 请问这里的FOR有什么不同呢? |
| 可打印版本 668 / 7 |
| 第1楼 xiaojun | 发表于 2004-02-03 00:00 |
| 银牌会员 发帖 499 积分 2,202 | |
|
请问这里的FOR有什么不同呢? 如果我把 for %%a in (c,d,e) do if exist %%a:\*.txt dir /s %%a:\*.txt 里的*.txt换成*.gho,就只查根目录的gho文件,而如果TxT或com或exe,它会连子目录的文件都找出来,为什么这样呢? 谢谢...
|
|
| 第2楼 willsort | 发表于 2004-02-03 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re xiaojun:
主要是因为的你的循环语句的循环体中使用了if exist %%a:\*.txt,即只在当前盘的根存在对应文件时,才搜索其子目录,我估计你的测试中,测试的盘根有.TXT,.COM,.EXE文件,却没有镜象文件。 |
|
| 第3楼 xiaojun | 发表于 2004-02-03 00:00 |
| 银牌会员 发帖 499 积分 2,202 | |
|
的确如此,替换if exist成dir /s 后,便是连子目录都找了,原来如此.多谢...!
不过,如果需要让它连子目录都找,不用dir或者外部命令,用if exist或其它来完成,该怎么写来变通呢? |
|
| 第4楼 willsort | 发表于 2004-02-03 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re xiaojun:
你的意思是指如何实现DOS目录的遍历吗?这在批处理实现上有很大难度,而且大多数情况都可以用其他思路来灵活变通。可以说出你的具体要实现的目标吗? |
|
| 第5楼 xiaojun | 发表于 2004-02-03 00:00 |
| 银牌会员 发帖 499 积分 2,202 | |
|
是的,我只希望在不借外部命令的情况下,找到一个文件便执行之,刚学批处理,不知道如何遍历1个盘符下的子目录...谢谢
|
|
| 第6楼 willsort | 发表于 2004-02-05 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re xiaojun:
一个不借用外部命令实现的目录遍历?有点开玩笑吧。 先给你一个利用递归算法实现的目录遍历,仅为示意性代码: ::visitdir.bat if == call %0 \. :main cd %1 if exist 指定文件 指定操作 dir /ad /b > dirlist.txt :subloop dir dirlist.txt | find " 0" > nul if not errorlevel 1 goto end type nul > null.txt fc dirlist.txt null.txt /n | find "1:" > setdir.bat echo e 100 "set dir=">setdir.asd echo w>>setdir.asd echo q>>setdir.asd debug setdir.bat nul call setdir call %0 %1\%dir% find "%dir%" dirlist2.txt copy dirlist2.txt dirlist.txt > nul goto subloop :end 以上程序使用外部命令 fc, find, debug或其他串操作工具. |
|
| 第7楼 xiaojun | 发表于 2004-02-05 00:00 |
| 银牌会员 发帖 499 积分 2,202 | |
|
谢谢您,以上已收集下来学习 ; 没有玩笑,刚学,不懂而已 ; 既然一定要用到外部命令,那我只好选择Locate,能少10排代码还多...再次多谢 !
|
|
| 第8楼 willsort | 发表于 2004-03-13 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re xiaojun:
外部命令也有外部命令的区别的。因为fc,find这些外部命令属于大多数系统的自带程序,不需要你的程序专门提供,也就是说移植性很强。而你说的Locate我就没有,需要随同你写的调用代码一同对外发布;而就大小而言,我相信Locate肯定比我写的这个程序要大些。 另外,那个递归算法的程序很有些问题,花时间写了个非递归的,已经测试通过,你可以看看。 http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?boardID=6&ID=9588 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |