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

[文件操作] 【已解决】求助批处理怎么批量修改文件名

本帖最后由 liyu963926475 于 2020-11-30 16:27 编辑

有大量图片,名称最后一个数字不管是个位数、十位数还是百位数,统一需改成三位数,比如:

0313-RS ·0010-0001-1-1-1.jpg   修改为     0313-RS ·0010-0001-1-1-001.jpg
0313-RS ·0010-0001-1-2-11.jpg   修改为     0313-RS ·0010-0001-1-2-011.jpg
0313-RS ·0010-0001-3-1-1.jpg   修改为     0313-RS ·0010-0001-3-1-001.jpg
0313-RS ·0010-0001-3-2-35.jpg   修改为     0313-RS ·0010-0001-3-2-035.jpg
0313-RS ·0010-0001-9-1-1-1.jpg   修改为     0313-RS ·0010-0001-9-1-1-001.jpg
0313-RS ·0010-0001-9-1-2-259.jpg   修改为     0313-RS ·0010-0001-9-1-2-259.jpg  
  

不知道这个要求可以用批处理实现吗?

放到jpg文件夹中运行
  1. @echo off & cd /d "%~dp0"
  2. set "zero=000"
  3. for %%i in ("*.jpg") do (
  4. set "head=" & set "foot="
  5. call :split "%%~ni"
  6. call set "foot=%zero%%%foot%%"
  7. call set "foot=%%foot:~-3%%"
  8. echo %%i
  9. call echo %%head%%%%foot%%.jpg
  10. call move "%%i" "%%head%%%%foot%%.jpg"
  11. echo ---------------------------
  12. )
  13. pause&exit
  14. :split
  15. set "str=%~1"
  16. if not "%str:~-1%"=="-" (
  17. set "head=%str:~0,-1%"
  18. set "foot=%str:~-1%%foot%"
  19. call :split "%%head%%"
  20. ) else goto :eof
复制代码
1

评分人数

TOP

回复 2# went


    感谢^_^

TOP

回复 2# went


    发现批处理是真的强大

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b *-*.jpg ^| findstr /i "\-[0-9]\.jpg$ \-[0-9][0-9]\.jpg$"') do (
  4.     set "Name=%%~ni"
  5.     if "!Name:~-3,1!" == "-" (
  6.         ren "%%i" "!Name:~0,-2!0!Name:~-2!%%~xi"
  7.     ) else (
  8.         ren "%%i" "!Name:~0,-1!00!Name:~-1!%%~xi"
  9.     )
  10. )
  11. pause
复制代码

TOP

  1. PowerShell "dir *-[0-9].jpg, *-[0-9][0-9].jpg | ren -NewName {$a=$_.Name -split '(?<=-)(?=\d+\.jpg$)'; $a[0] + $a[1].PadLeft(7, '0')} -WhatIf"
复制代码
1

评分人数

TOP

返回列表