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

[文本处理] bat批量给文件名从第5位开始补齐4个0,最后两位不不变

[复制链接]
发表于 2023-10-5 07:58:24 | 显示全部楼层 |阅读模式
bat批量给文件名从第5位开始补齐4个0,最后两位不不变?

源文件名:               目标文件名:
YSP401-1.JPG         YSP40001-1.JPG
YSP42-2.JPG            YSP40002-2.JPG
WSP510-1.JPG        WSP50010-1.JPG
WSP510-2.JPG        WSP50010-2.JPG

求大神帮忙,不胜感激
发表于 2023-10-5 09:25:34 | 显示全部楼层
  1. powershell -c "dir *.jpg|%{$qian=$_.Name.Split('-');$newname='{1}{0:d4}-{2}' -f [int]$qian[0].Substring(4),$qian[0].Substring(0,4),$qian[1];ren $_ $newname}"
复制代码
发表于 2023-10-5 11:46:10 | 显示全部楼层

  1. @echo off
  2. for %%a in (*.JPG) do (
  3. set "n=%%~na"
  4. setlocal enabledelayedexpansion
  5. if "!n:~4,-2!" neq "" (
  6. set /a "m=10000!n:~4,-2!+0" 2>nul && rename "%%a" "!n:~0,4!!m:~-4!!n:~-2!%%~xa" 2>nul
  7. )
  8. endlocal
  9. )
  10. pause
复制代码
发表于 2023-10-5 20:17:51 | 显示全部楼层
  1. @echo off
  2. for /f "tokens=1* delims=-" %%a in ('dir /b /a-d *-*.jpg') do (
  3.         set a=%%a
  4.         set b=%%b
  5.         setlocal enabledelayedexpansion
  6.         set c=0000!a:~4!
  7.         ren "!a!-!b!" "!a:~0,4!!c:~-4!-!b!"
  8.         endlocal
  9. )
  10. pause
复制代码
发表于 2023-10-7 02:46:03 | 显示全部楼层
回复 2# pd1
  1. powershell -noprofile -executionpolicy bypass "dir *.jpg|%%{ren $_ ([regex]::Replace($_,'(?<=\D+\d+)\d+(?=-.+)',{param([string]$x) '{0:d4}' -f [int]$x}))}"
复制代码
写复杂了

评分

参与人数 1技术 +1 收起 理由
pd1 + 1 1

查看全部评分

发表于 2023-10-7 03:10:15 | 显示全部楼层
  1. (?<=\D{3}\d+)\d+(?=-.+)
复制代码
要准确一点的话用这个吧,那个有点偷鸡,非数字可能会超过4位
发表于 2023-10-11 11:16:27 | 显示全部楼层
回复 1# sunqv
sed( http://bcn.bathome.net/tool/4.9/sed64.exe )实现方法如下:

  1. sed -r ":a;/^(.{4})[0-9]{4}-([0-9]\.JPG)$/b;s/^(.{4})([0-9]+-[0-9]\.JPG)$/\10\2/;ba" a.txt>b.txt
复制代码
发表于 2023-10-11 11:46:09 | 显示全部楼层
回复 1# sunqv

针对楼主样本,如果要直接修改文件名,方法如下:

  1. dir *.JPG /b/a-d|sed -r -e"h;:a;/^(.{4})[0-9]{4}-([0-9]\.JPG)$/bb;s/^(.{4})([0-9]+-[0-9]\.JPG)$/\10\2/;ba;:b;x;G;s/^(.+)\n(.+)$/ren \1 \2/"|cmd.exe
复制代码
发表于 2023-10-11 12:36:32 | 显示全部楼层
对8楼的脚本改进一下,效率更高:

  1. dir *.JPG /b/a-d|sed -r "h;s/^(.{4})([0-9]+-[0-9]\.JPG)$/\10000\2/;s/^(.{4}).*([0-9]{4}-[0-9]\.JPG)$/\1\2/;x;G;s/^(.+)\n(.+)$/ren \1 \2/"|cmd.exe
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 08:56 , Processed in 0.026966 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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