===== 文件夹结构 ============================================= D:test ---A Folder 1 |-----A file 1.txt |-----A file 2.txt |-----A file 3.txt ---B Folder 2 |-----B file 1.txt |-----B file 2.txt |-----B file 3.txt |---B Folder 3 |-----B sub file 1.txt |-----B sub file 2.txt |-----B sub file 3.txt 结果 D:test. D:testA Folder 1. D:testA Folder 1A file 1.txt D:testA Folder 1A file 2.txt D:testA Folder 1A file 3.txt D:testB Folder 2. D:testB Folder 2B file 1.txt D:testB Folder 2B file 2.txt D:testB Folder 2B file 3.txt D:testB Folder 2B Folder 3. D:testB Folder 2B Folder 3B sub file 1.txt D:testB Folder 2B Folder 3B sub file 2.txt D:testB Folder 2B Folder 3B sub file 3.txt 结果 D:test. D:testA Folder 1. D:testA Folder 1A file 1.txt D:testA Folder 1A file 2.txt D:testA Folder 1A file 3.txt D:testB Folder 2. D:testB Folder 2B file 1.txt D:testB Folder 2B file 2.txt D:testB Folder 2B file 3.txt D:testB Folder 2B Folder 3. D:testB Folder 2B Folder 3B sub file 1.txt D:testB Folder 2B Folder 3B sub file 2.txt D:testB Folder 2B Folder 3B sub file 3.txt 那么 和 的区别是什么呢? 在有cd %work_path% 的时候,这两个命令执行的结果是一样的,就像我们上面举的例子。但是 for /R %%s in (.,*) do ( echo %%s ) 的批处理中没有cd %work_path% ,那么显示的将是这个批处理文件所在文件夹下面的遍历结果。 结果 D:test. D:testA Folder 1. D:testB Folder 2. D:testB Folder 2B Folder 3. 结果 D:test. D:testA Folder 1. D:testA Folder 1A file 1.txt D:testA Folder 1A file 2.txt D:testA Folder 1A file 3.txt D:testB Folder 2. D:testB Folder 2B file 1.txt D:testB Folder 2B file 2.txt D:testB Folder 2B file 3.txt D:testB Folder 2B Folder 3. D:testB Folder 2B Folder 3B sub file 1.txt D:testB Folder 2B Folder 3B sub file 2.txt D:testB Folder 2B Folder 3B sub file 3.txt 这样的话看出来区别了吧。 再看一个================================= 结果 D:testA Folder 1A file 1.txt D:testA Folder 1A file 2.txt D:testA Folder 1A file 3.txt D:testB Folder 2B file 1.txt D:testB Folder 2B file 2.txt D:testB Folder 2B file 3.txt D:testB Folder 2B Folder 3B sub file 1.txt D:testB Folder 2B Folder 3B sub file 2.txt D:testB Folder 2B Folder 3B sub file 3.txt 就是只显示了文件VisitF.bat - 对指定路径指定文件进行遍历的程序 VisitD.bat - 对指定路径指定目录进行遍历的程序 VisitL.bat - 对指定文件列表中的文件进行遍历的程序 VisitI.bat - 对指定路径指定DIR信息的文件进行遍历操作的的程序 Visit.bat - 文件遍历批处理程序 VisitCE.bat - 文件遍历批处理程序命令行增强版 在sp4 下出现类似的问题,第二个问题实际上也是fc的不兼容问题,他在按行号显示时,每行文字前有8 个字节位,而不是dos6和win9x 下的9 个,所以解决起来也很简单,将debug 脚本中的 e 'set file='改为 e 'set fil=' 即可。 但是,这只是就事论事而已,以上的提到的三个批处理,只是我在dos 下练兵用的试验原型,做得很粗糙,自从今年3 月份正式转向win 之后,使用中遇到了很多新问题,比如文件名包含空格的问题,系统/ 隐藏属性目录的问题;在nt下使用,又遇到了中文文件名的问题;而且由于循环体中使用了过多的文本流控制,导致了效率的严重低下;另外,三个程序功能上和实现上并没有太大的差别,没有拆分的必要。 综所上述,将以上代码重写就成为必须。合并代码,弥补漏洞,改善性能,书写文档,就出现了所谓的 V2 版,这中间其实并没有花很多功夫。 然而,一个偶然的下午,突然心血来潮,何不将visit 的命令行功能做一下增强,比如支持多个路径、多个过滤器(filter)、多个文件列表,原想只是加一个命令行参数分析循环,然而真正实现起来,却再次体会到了命令行的复杂,if for嵌套时冲定向输出,判定目录时根目录与子目录的不同,for 对过滤器的低能替换(win9x/dos) ,一个个新问题摩肩接踵,层出不穷,竟然整整耗了我大半个工作日的时间,才勉强实现了一个粗糙的版本,这就是所谓的 V2CE 版,对与严格的测试我没有多大的信心。 现在,再回头看我的工作,其实那个 V2CE 版其实是没有多大的应用价值。多个路径和过滤器,完全可以通过多次调用visit 来实现,而且实际上,我们大多数情况下只用一个路径和过滤器;而且,多参数控制带来了易用度的下降,用户总是对参数繁多的程序有一定的心理障碍,我个人对dos 压缩软件的爱好,从高到低依次是rar,zip,arj, 易用度就是第一靠量;另外,最重要的是,多参数控制导致了代码量和复杂性的大幅提升,这个程序一度让我钻进了if for构建的幽魂迷宫而不知南北西东,程序的可读性越来越差,调试起来也越来越困难,同时兼容性上拉上了更多的绊马索。 这些,就是功能提升所付出的代价,虽然这只是一个比较极端的例子,但是功能与简洁的平衡在程序设计的其重要性可见一斑。亲和性的界面并不意味着亲和性的代码,人性化的需求并不意味着人性化的实现,一味将使用方的复杂性转嫁给设计者(比如Windows), 并不是一个很聪明的主意,反之亦然(比如Linux ),这尚不考虑代码功能增强对设计方和使用方的双重施压。
推荐整理分享dos下遍历目录和文件的代码(主要利用for命令)(dos命令遍历文件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cmd遍历目录,find遍历整个目录,find遍历整个目录,dos命令遍历文件,dos 递归遍历目录,dos 递归遍历目录,dos命令遍历文件,dos 递归遍历目录,内容如对您有帮助,希望把文章链接给更多的朋友!
Autorun 病毒清除工具bat代码 @EchoOffcolor2ftitleAutorun病毒清除工具-ByPhexonRem杀进程taskkill/F/IMSocksA.exe/IMSVOHOST.exe/IMAdobeR.exe/IMravmone.exe/IMwincfgs.exe/IMdoc.exe/IMrose.exe/IMsxs.exe/IMautorun.exe/IMKB
cmd dir结构树显示代码(列出目录文件) @rem此BAT文件名一定不能是"tree.bat",否则tree命令会实效,不知道为什么@rem可能是因为系统目录有"tree.com",系统会混淆吧.@rem用"dir.bat"作文件名却可以.@echooffr
sxs.exe的查杀bat代码 ::echo特征:在每个盘根目录下自动生成sxs.exe,autorun.inf文件,有的还在windowssystem下生成SVOHOST.exe或sxs.exe,文件属性为隐含属性。自动禁用杀毒软件::解