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

假设序号不超过5位数:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (1 10 100 1000 10000) do if exist *_%%i.pdf set n=%%i
  4. set /a n*=10
  5. for /f "tokens=1* delims=_" %%i in ('dir /b /a-d *_*.pdf') do (
  6.     set m=%%~nj
  7.     set /a m+=n
  8.     ren "%%i_%%j" "%%i_!m:~1!%%~xj"
  9. )
  10. pause
复制代码
1

评分人数

TOP

如果序号不连续也可以这样,不过要搜索2次文件,效率上稍差:
  1. @echo off
  2. set n=0
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=2 delims=_" %%i in ('dir /b /a-d *_*.pdf') do (
  5.     if %%~ni gtr !n! set n=%%~ni
  6. )
  7. for /l %%i in (1,1,9) do set n=!n:%%i=0!
  8. set n=1!n!
  9. for /f "tokens=1* delims=_" %%i in ('dir /b /a-d *_*.pdf') do (
  10.     set m=%%~nj
  11.     set /a m+=n
  12.     ren "%%i_%%j" "%%i_!m:~1!%%~xj"
  13. )
  14. pause
复制代码
5楼代码有一处笔误,已修改。

TOP

回复 21# qd2024
前后数字都一样?不会出现“1.1 1.2 1.3...2.1 2.2...”等情况。

TOP

回复 27# ppll2030
第8行代码有时会误伤。
  1. set str=!str:%%i=!
复制代码
比如文件名前面序号是1,而文件名某处也包含1,就会出现问题。不如修改为:
  1. set str=!str:*%%i=!
复制代码
这样更加严谨一些。

TOP

返回列表