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

[文件操作] 求批处理所有文件按创建时间顺序重命名 从0001开始按四位数字编号排序

[复制链接]
发表于 2025-8-17 16:14:13 | 显示全部楼层 |阅读模式
我有几百个文件夹,每个文件夹下面有很多文件名杂乱导致排序很乱的jpg图片,但按照文件创建时间逻辑顺序是对的。

跪求所有jpg文件按文件创建时间顺序重命名 从0001开始按0002 0003 0004的四位数字编号排序重命名。实例如下——

如一个文件夹的内容如下  lkasniubygw.jpg dkndyqbyqwb.jpg mingOBYBYGQE.jpg FNQEUBY8VVF.jpg ……

经过批处理后 所有文件按文件创建时间顺序重新排序 变为 0001.jpg 0002.jpg 0003.jpg 0004.jpg ……
发表于 2025-8-17 22:08:14 | 显示全部楼层
  1. @Echo off
  2. SetLOCAL ENABLEDELAYEDEXPANSION
  3. Set SX=10000
  4. For /f %%i in ('dir /b/od *.jpg') do (
  5. Set/a SX+=1
  6. Set SZ=!SX:~1!
  7. Ren %%i !sz!.jpg )
  8. Pause>Nul
复制代码
兄弟你幸运,碰巧我在论坛里和大神门吹牛,正吹得愉快,,
又看到你的帖子那么久没人回复,就回复了下,,平时我很懒的,,
刚才偷懒去CSDN那里瞄了一眼发现他们的写法和我都不一样的,代码比我的多,还繁杂,居然还收费5毛。。。

评分

参与人数 1技术 +1 收起 理由
crownking1983 + 1 乐于助人

查看全部评分

发表于 2025-8-17 22:23:45 | 显示全部楼层
本帖最后由 Five66 于 2025-8-17 22:31 编辑

  1. @echo off

  2. set a=10000

  3. rem set "unless_debug_then=echo,"
  4. set folders_each=for /d %%i in (*)
  5. set files_each=for /f "eol=/ tokens=3* delims= " %%m in ('2^^^>nul dir /tc /a-d-h *.jpg ^^^|findstr /b /rc:"[^ ]" ^^^|sort')

  6. %folders_each% do (
  7. setlocal&rem {
  8. pushd "%%i"&echo processing folder "%%i"
  9. %files_each% do (
  10. set /a _c+=1&set /a a+=1
  11. set "_file=%%~nn"&set "_ext=%%~xn"
  12. setlocal enabledelayedexpansion
  13. %unless_debug_then% rename "!_file!!_ext!" "!a:~1,4!.neeeeeeeeeew"
  14. endlocal
  15. )
  16. if defined _c (
  17. %unless_debug_then% rename *.neeeeeeeeeew *.jpg
  18. set "_c="
  19. ) else echo there is nothing to do
  20. popd&echo,
  21. endlocal&rem }
  22. )
  23. %all_end%

  24. echo done&pause&exit /b 0
复制代码
发表于 2025-8-17 22:37:02 | 显示全部楼层
回复 3# Five66
兄弟 你确定需要那么多步骤吗?呵,,还有,这样写法,确定小白门能看懂吗?,,加了那么多层贞操裤,脱完只为了放,,,,,,,
发表于 2025-8-17 22:44:41 | 显示全部楼层
回复 4# jiavip


    额 ,去掉了一些细节可能引起的问题 ,弄着弄着就这么长了...
发表于 2025-8-17 23:17:27 | 显示全部楼层
推荐一下stackoverflow也接入了
 楼主| 发表于 2025-8-18 01:29:20 | 显示全部楼层
本帖最后由 crownking1983 于 2025-8-18 01:32 编辑

回复 2# jiavip


    大神 你太牛逼了! 那么 我能举一反三地跪求引申求教一下么?

    1.如果不按照创建时间 如果按照修改时间排序 这个代码怎么改呢?

    2.如果不按照正序 如果按照逆序排列 这个代码怎么改呢?

    另外,您写的这个当前只能在文件夹内部改同级文件,不能改子文件夹。如果也能同时改子文件夹的话,代码该怎么改呢?我是一个非计算机专业的,别见怪哈。
发表于 2025-8-18 07:39:29 | 显示全部楼层
本帖最后由 jiavip 于 2025-8-18 08:06 编辑

回复 7# crownking1983 时写入时间,算是修改时间排序吧,
dir命令按照修改时间排序的属性!,,dir /b/od /tw
/o 是排序开关n=名称,s=大小,d=日期,,反序则属性前面加-符号,,
dir /b/o-d 反序排列,
dir  /b /s /od 参数/s是修改当前目录下所有次级目录(子目录),,
发表于 2025-8-18 08:28:02 | 显示全部楼层
https://mp.weixin.qq.com/s/_1qzhObTSbc6HRpJy4onhQ
BAT脚本批量重命名文件的三种常见情形:
1、提取文本第一行内容作为文件名
2、根据文件名列表依次重命名文件

  •     按照文件名升序或降序处理
  •     按照文件大小升序或降序处理
  •     按照文件日期时间升序或降序处理
3、各个子文件夹依次编号
  •     子文件夹连续编号
  •     子文件夹独立编号
  •     编号补零保证固定位数
  •     以子文件夹名称作为文件名的前缀
发表于 2025-8-18 10:38:01 | 显示全部楼层
回复 7# crownking1983


    要按照修改时间排序的话 ,其实不用特意修改 ,因为原来 dir /b /od 默认就是修改时间 , ,创建后没有编辑修改的话 ,跟创建时间是一样的 ,跟访问时间也是一样的(没有禁用文件系统最后访问时间的话)
按创建时间是 dir /b /od /tc
按修改时间是 dir /b /od /tw
按访问时间是 dir /b /od /ta
逆序的话将 /od 改成 /o-d
要包括子文件夹末尾加上 /s

评分

参与人数 1技术 +1 收起 理由
77七 + 1 感谢分享

查看全部评分

发表于 2025-8-19 12:57:24 | 显示全部楼层
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /s /a-d /od /tc "*.jpg"') do (
  4.         if not defined _"%%~dpi" (
  5.                 set _"%%~dpi"=1
  6.                 set n=10000
  7.         )
  8.         set /a n+=1
  9.         call ren "%%i" "%%n:~-4%%%%~xi"
  10. )
  11. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:06 , Processed in 0.028907 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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