[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何把文件夹目录下的数字文件名按大小排序?

BAT批处理部分:
  1. for %%i in ("%dir%\*%ext%") do (
  2. set /a n+=1
  3. copy "%%i" "%bakDir%%prefix%!n!%ext%"
  4. echo "%%i ----> %bakDir%%prefix%!n!%ext%"
  5. )
复制代码
在这个for循环里的文件名为1.jpg、2.jpg、3.jpg以此类推有几百个,全是数字的。
读取后默认的排序是按字母来的11.jpg会排在2.jpg前面(windows资源管理器中是按数字大小),如何能按数字大小排序,再进一步操作呢。
dir为目录路径,ext为文件扩展名,都是可自定义输入参数。

以上谢谢大家~

回复 2# wujunkai
我是循环读取指定目录下的文件再复制改名备份

TOP

回复 4# wujunkai
代码没变化,我的整个目录文件都输出了,就是排序不对,没写排序算法进去,不太懂bat的排序。

TOP

回复 5# FOR
补齐的方法对文件多的排序还是有问题,要专门写个转换数字的排序,bat上有点麻烦。

TOP

回复 8# went
非常感谢,用第二种不生成临时文件的方法实现了,第一种测试了下如果目录下含有子目录的话,排序时会把子目录文件也加进来。
另外为啥批处理语法里,把这个for循环放在if块里就不会生效,把它单独放代码段里,再到if块里跳转过去才有效?
bat刚入门,还望多指教。

TOP

返回列表