如何用批处理遍历文件夹一个文件夹下所有子目录和子目录下的文件

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

先来看这样一个需求,假设有AB两个目录,其中A目录是资源目录B目录是工作目录,其中资源目录不定期更新资源文件都在A目录下,并且没有子目录层级关系但是资源要被使用时需要更新到B工作目录,B目录根据工程需要建立了一个包含众多子目录的层级体系这样当A目录中的一个资源文件更新后,需要手动复制A目录中更新的资源文件然后在B目录中找到对应的位置,然后进行粘贴替换这样的操作如果很久一次、或者每次只有1、2个文件还好,如果资源文件大范围更新那么要一个个找到更新文件在B目录中的位置然后替换就成了一件令人苦恼的事情,所以根据这个需求才有了下面的探索过程。

一开始想把A目录作为出發点毕竟A目录中包含了修改后的资源文件,但是A目录更新后怎样才能准确的修改对应的B目录呢我想到了配表,每次新增资源后都会修改配置表,将A目录中的各个文件资源与B目录中的位置建立对应关系这样A目录下的资源更新后就可以根据配置文件统一更新B目录了。

但這样的做法就是需要经常维护配置文件,特别是增加或者删除资源的时候然后我就想到了现在的这个做法,从B目录出发注意本文主偠解决的是资源文件的更新,而不是新增更新就说明是原有的文件,只是内容发生了变化比如一些UI文件,这些文件经常会做布局格式嘚调整控件的增加和删除等等,调整结束后需要更新到工作目录

实现的过程并没有想象的那么顺利,期间遇到了诸多问题和一些新的概念比如for循环的语法,for循环中的变量定义if条件的语法,字符串变量的替换文件目录的处理,延迟环境变量扩展等等这些问题每一項都可以作为一个单独的知识点,后续我会抽时间慢慢总结到一起总之最后终于可以用了,前后大约花了1个半小时的时间想想也是醉叻,下面是一个具体的示例及对应的实现代码

  1. A资源目录对应实际的”E:/dirZ”,结构如下:

  2. B工作目录对应实际的”E:/dirA”结构如下:

  3. 现在需要把E:/dirZ目录中的txt文件,按照E:/dirA目录的层级结构更新到对应位置,并且不更新ggg.txt文件以下是实现的代码:

  4. 请按任意键继续. . .

到此为止我们就解决了这个資源更新的实际问题,每次资源更新后只要运行这个批处理文件就可以更新工作目录中对应的资源文件了在这个例子中关于目录的截取,一开始走了很多弯路其实有很多现成的方式,所以需要在此记录一下方便以后查找使用,具体查看示例代码:

}
 
获取到的路径信息保存到脚本所在目录下的“子目录路径列表.txt”中

你对这个回答的评价是?

}

我要回帖

更多关于 批处理遍历文件夹 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信