@echo off & setlocal enabledelayedexpansion
::设置替换规则
set "REP=123456→XXXX1;abcd→XXXX2"
for %%i in (%REP%) do (
(
for /f "delims=→ tokens=1*" %%A in ("%%i") do (
(
for /f "tokens=* usebackq" %%f in (`dir /b /on *.jpg 2^>nul`) do (
set FN=%%f
REN "!FN!" "!FN:%%A=%%B!" 2>nul
)
)
)
)
)
echo 重命名完成。&pause >nul
**运行前先备份。
@echo off&for /f "tokens=1* delims=_" %%1 in ('dir /b "123456*.jpg"')do ren "%%1_%%2" "%%11_%%2"
for /f "tokens=1* delims=_" %%1 in ('dir /b "abcd*.jpg"')do ren "%%1_%%2" "%%12_%%2"
“但是有些文件名长度不一样。。 有些改名造成位置错误”是什么?
举个例子,不然不好理解你的问题
rename c:\a.txt b.txt