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

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

[复制链接]
发表于 2020-11-30 14:38:33 | 显示全部楼层 |阅读模式
本帖最后由 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  
  

不知道这个要求可以用批处理实现吗?
发表于 2020-11-30 16:06:56 | 显示全部楼层
放到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技术 +1 收起 理由
liyu963926475 + 1 乐于助人

查看全部评分

 楼主| 发表于 2020-11-30 16:24:57 | 显示全部楼层
回复 2# went


    感谢^_^
 楼主| 发表于 2020-11-30 16:26:01 | 显示全部楼层
回复 2# went


    发现批处理是真的强大
发表于 2020-11-30 17:05:44 | 显示全部楼层
  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
复制代码
发表于 2020-11-30 17:08:19 | 显示全部楼层
  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技术 +1 收起 理由
smss + 1 学习

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 06:37 , Processed in 0.020503 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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