找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22309|回复: 4

[文件操作] 批处理遍历文件夹时文件排序问题?

[复制链接]
发表于 2023-12-12 09:10:57 | 显示全部楼层 |阅读模式
我要遍历videos文件夹下的所有mp4文件
文件排序是1.mp4 2.mp4 3.mp4 ... 557.mp4
但是遍历的时候,变成了1.mp4 10.mp4 101.mp4 104.mp4 ...
有办法按照我大小排序吗?
我的代码:
  1. @echo off
  2. for %%i in (D:\短视频\shortvideos\*.mp4) do (
  3. echo %%i
  4. )
复制代码
感谢!
发表于 2023-12-12 09:26:27 | 显示全部楼层
回复 1# li_zhicheng

纯整数型文件名排序可借助第3方工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe ):

  1. dir "D:\短视频\shortvideos\*.mp4" /b|gawk -F"." "{a[$1]=$0;b[NR]=$1}END{l=asort(b,c);for(i=1;i<=l;i++)print a[c[i]]}"
复制代码
发表于 2023-12-12 09:36:38 | 显示全部楼层
回复 1# li_zhicheng
  1. @echo off
  2. for /l %%i in (1,1,1000) do (
  3.     if exist "D:\短视频\shortvideos\%%i.mp4" (
  4.         echo D:\短视频\shortvideos\%%i.mp4
  5.     )
  6. )
  7. pause
复制代码
发表于 2023-12-12 10:50:22 | 显示全部楼层
回复 1# li_zhicheng
最好把你的真实需求说明白。也有可能不按顺序排列就能实现目的呢。
发表于 2023-12-13 14:33:25 | 显示全部楼层
本帖最后由 aloha20200628 于 2023-12-13 14:37 编辑


老帖中处理这类问题(数字字符串按纯数值排序),一般归结于先补零位,再丢给sort.exe排序。
但若从本坛第三方下载一个GNU sort.exe 76版 ( http://bcn.bathome.net/tool/7.6/sort.exe ),则可大为简化且效率提高。
例如,针对一楼示例的解法如下》

  1. dir /b "D:\短视频\shortvideos\*.mp4"|sort76.exe -n
复制代码
或在循环体内获取显示

  1. for /f "delims=" %%F in ('dir/b "D:\短视频\shortvideos\*.mp4"^|sort76.exe -n') do (echo,%%F)
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:35 , Processed in 0.018243 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表