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

[文本处理] 批处理重命名后按名称排序会打乱,求助大佬帮助

[复制链接]
发表于 2023-2-21 20:02:36 | 显示全部楼层 |阅读模式
  1. SETLOCAL ENABLEDELAYEDEXPANSION
  2. set /p num= 请输入开始数字:
  3. FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') do (
  4.     IF NOT "%%i"=="%~n0%~x0" (
  5.         set /A num+=1
  6.         ren "%%i" "!num!%%~xi"
  7.     )
  8. )
  9. ENDLOCAL
  10. exit
复制代码
比如原本顺序是1.jpg(a),2.jpg(b),3.jpg(c),4.jpg(d),5.jpg(e),想变成11.jpg(a),12.jpg(b),13.jpg(c),14.jpg(d),15.jpg(e)
但实际执行后会变成11.jpg(a),12.jpg(b),13.jpg(d),14.jpg(e),15.jpg(c)
部分文件未按照本来的顺序被打乱
发表于 2023-2-21 21:09:51 | 显示全部楼层
发表于 2023-2-21 21:15:02 | 显示全部楼层
回复 1# 逍遥生
  1. dir /A-D /B /OD /TC
复制代码
这里/OD 是按时间排序,/ON 才是按名称排序。
 楼主| 发表于 2023-2-22 21:15:04 | 显示全部楼层
回复 2# 77七


    看懂了一些,但是我想在我这个上面改动 好像没法解决
 楼主| 发表于 2023-2-22 21:19:02 | 显示全部楼层
回复 3# buyiyang


    用on试了,好像顺序乱的更厉害了  好像是按照1,10,100...,11,111,111...,12,13...,2,20,21,这个排序后再重命名的
 楼主| 发表于 2023-2-22 21:20:19 | 显示全部楼层
求大佬指导。就是手动输入起始数字,然后安装win资源管理器里名称排列的顺序重命名
发表于 2023-2-22 21:37:13 | 显示全部楼层
  1. @echo off
  2. set /p num=请输入开始数字:
  3. setlocal enabledelayedexpansion
  4. for /l %%i in (1,1,100) do (
  5.         if exist %%i.jpg (
  6.                 ren "%%i.jpg" "!num!.jpg1"
  7.                 set /a num+=1
  8.         )
  9. )
  10. ren "*.jpg1" "*.jpg"
  11. pause
复制代码

这样行吗
 楼主| 发表于 2023-2-22 22:04:32 | 显示全部楼层
回复 7# 77七


    不行,三个问题,1.第二张开始顺序已经全乱了,2.有一半最后还是jpg1格式,3。只转换了前面一部分,后面的没动静,
小白只能简单看懂一些,这种复杂的问题,完全没头绪
发表于 2023-2-22 22:19:53 | 显示全部楼层
回复 8# 逍遥生
把100改成10000试试
如果不行

请多举几个有代表性例子,或者贴出全部实际文件名
 楼主| 发表于 2023-2-22 22:28:57 | 显示全部楼层
回复 9# 77七


    实际上手动合并漫画文件,文件是分散的,想把很多文件夹合并到一起,每个文件夹都是从1开始,手动合并的时候 要全部重命名 从1开始一直往后叠加,所以顺序不能打乱,具体多少个也是不固定的,我原本的可以实现大多数功能,就是有时候图片顺序会打乱,上面老哥说的/OD 是按时间排序,/ON的话好像是英文名称排序,不是数字名称排序
发表于 2023-2-22 22:40:40 | 显示全部楼层
回复 10# 逍遥生


请截图把能否反映问题的真实的文件名给大家看看,编出来的几个文件名没能准确解释问题所在。
如果需要上传文件,可以用阿里云盘或百度网盘。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
 楼主| 发表于 2023-2-22 23:00:33 | 显示全部楼层
回复 11# Batcher


原始图片顺序是这样的

想要的结果是这样的

但实际结果经常是这样
   
发表于 2023-2-22 23:04:43 | 显示全部楼层
本帖最后由 77七 于 2023-2-22 23:25 编辑
  1. @echo off
  2. set /p num=请输入开始数字:
  3. set max=0
  4. set min=99999999
  5. setlocal enabledelayedexpansion
  6. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  7.         if %%~ni geq !max! (
  8.                 set max=%%~ni
  9.         )
  10.         if %%~ni leq !min! (
  11.                 set min=%%~ni
  12.         )
  13. )
  14. for /l %%i in (!min!,1,!max!) do (
  15.         if exist %%i.jpg (
  16.                 ren "%%i.jpg" "!num!.jpg1"
  17.                 set /a num+=1
  18.         )
  19. )
  20. ren "*.jpg1" "*.jpg"
  21. pause
复制代码
发表于 2023-2-22 23:08:22 | 显示全部楼层
回复 12# 逍遥生


test_1.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. REM 假设新的文件名从1001开始
  5. set "NewName=1001"
  6. REM 假设原文件个数不超过999个
  7. for /l %%i in (1,1,999) do (
  8.     if exist "%%i.jpg" (
  9.         ren "%%i.jpg" "!NewName!.jpg"
  10.     )
  11.     set /a NewName+=1
  12. )
复制代码
 楼主| 发表于 2023-2-22 23:18:40 | 显示全部楼层
回复 13# 77七


    实测输出结果是这样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 01:20 , Processed in 0.017252 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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