例如 某个文件夹下有
1.txt 12.txt 13.txt
22.txt 23.txt
34.txt
把1开头的文件改名为 a1.txt a2.txt a3.txt
把2开头的文件改名为 b2.txt b3.txt
把3开头的文件改名为 c4.txt
以下为运行效果图:
实际执行代码如下:
放在要处理的文件夹内运行。
追问大神棒棒的 !
不过我的意思不是固定的要把数字替换为顺序的字母,只是举个例子。
是想如果他包含某些字段,就根据字段的不同来修改文件名。
条件是包含某些字符 具体替换规则每个不一样
例如
张三做饭.txt 李四吃饭. txt
变成 张三做饭ghdf.txt 李四吃饭了.txt
王五洗碗打破碗.txt
效果图
@echo off & title 根据规则批量替换字符串 By 依梦琴瑶
cd /d %~dp0 & color 0a
setlocal enabledelayedexpansion
::设置要处理的文件类型,多个类型用英文逗号分隔,如果要处理所有文件,请只保留一个星号*
set Ext=*.txt,*.jpg
::设置处理是否包含子目录,1 代表是,其它字符代表否
set Sub=0
del /f /q "%tmp%\Replace*.?at"
for /f "tokens=1 delims=:" %%a in ('findstr /n ^::ReplaceRules::$ "%~0"') do more +%%~a "%~0">"%tmp%\ReplaceRules.dat"
if "%Sub%"=="1" (set S=/a-d/s/b) else (set S=/a-d/b)
for /f "delims=" %%a in ('dir %S% %Ext%') do (
if not "%%~fa"=="%~f0" (
set "Str=%%~na"
for /f "tokens=1,2* delims=|" %%i in ('type "%tmp%\ReplaceRules.dat"') do (
if not "%%~na"=="!Str:%%~i=%%~j!" (
echo "%%~nxa" --^>^> "!Str:%%~i=%%~j!%%~xa"
(echo ren "%%~fa" "!Str:%%~i=%%~j!%%~xa")>>"%tmp%\ReplaceFiles.bat"
)
)
)
)
call "%tmp%\ReplaceFiles.bat"
echo, & echo 批量替换字符串完成,请按任意键退出
pause >nul & exit
::在下方写上要替换的规则,一行一条,
::替换前和替换后用英文竖杆 | 分隔。
::ReplaceRules::
吃饭|吃饭了
自己|爱自己
么么哒|萌萌哒
苦恼|幸福
另存为bat后,把它放到要操作的目录下,一定要放在文件所在目录,不然会报错