标题: [文本处理] bat批量给文件名从第5位开始补齐4个0,最后两位不不变 [打印本页]
作者: sunqv 时间: 2023-10-5 07:58 标题: bat批量给文件名从第5位开始补齐4个0,最后两位不不变
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
求大神帮忙,不胜感激
作者: pd1 时间: 2023-10-5 09:25
- 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}"
复制代码
作者: Five66 时间: 2023-10-5 11:46
- @echo off
- for %%a in (*.JPG) do (
- set "n=%%~na"
- setlocal enabledelayedexpansion
- if "!n:~4,-2!" neq "" (
- set /a "m=10000!n:~4,-2!+0" 2>nul && rename "%%a" "!n:~0,4!!m:~-4!!n:~-2!%%~xa" 2>nul
- )
- endlocal
- )
- pause
复制代码
作者: 77七 时间: 2023-10-5 20:17
- @echo off
- for /f "tokens=1* delims=-" %%a in ('dir /b /a-d *-*.jpg') do (
- set a=%%a
- set b=%%b
- setlocal enabledelayedexpansion
- set c=0000!a:~4!
- ren "!a!-!b!" "!a:~0,4!!c:~-4!-!b!"
- endlocal
- )
- pause
复制代码
作者: Nsqs 时间: 2023-10-7 02:46
回复 2# pd1 - powershell -noprofile -executionpolicy bypass "dir *.jpg|%%{ren $_ ([regex]::Replace($_,'(?<=\D+\d+)\d+(?=-.+)',{param([string]$x) '{0:d4}' -f [int]$x}))}"
复制代码
写复杂了
作者: Nsqs 时间: 2023-10-7 03:10
复制代码
要准确一点的话用这个吧,那个有点偷鸡,非数字可能会超过4位
作者: hfxiang 时间: 2023-10-11 11:16
回复 1# sunqv
sed( http://bcn.bathome.net/tool/4.9/sed64.exe )实现方法如下:- 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
复制代码
作者: hfxiang 时间: 2023-10-11 11:46
回复 1# sunqv
针对楼主样本,如果要直接修改文件名,方法如下:- 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
复制代码
作者: hfxiang 时间: 2023-10-11 12:36
对8楼的脚本改进一下,效率更高:- 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
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |