某文件夹下有很多的文件,在某些文件中有我们不想要的字符,但又方便找是哪一个文件,比如有A文件夹,下面有很多目录和文件,某些文件中有字符ppp,但我们想要所有这些文件中的ppp换成boy,那么可以用批处理文件搞定它!
将下面内容保存为:批量字符串替换.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
@echo off :aa Notepad %0 ::-------------------------自定义项目----------------------------- ::指定预处理根目录(递归,点代表当前目录) set DPATH=. ::指定预处理文件类型(多个扩展名用空格分开,比如:*.pas *.txt) set FILETYPE=*.pas ::指定预查找字符串(不支持特殊字符) set Find_str=ppp ::指定用于替换的字符串(不支持特殊字符) set REP_str=boy ::---------------------------------------------------------------- set tmep=replace_bak.tmp cd %DPATH% setlocal enabledelayedexpansion for /r %%k in (%FILETYPE%) do ( set /a sum=sum+1>nul cd.>"%tmep%" for /f "tokens=1* delims=:" %%i in ('findstr /i /n .* "%%k"') do ( cls echo. echo 正在执行递归批量查找替换... .... echo. echo 目标文件类型[ %FILETYPE% ] echo 待替换字符串[ %Find_str% ] echo 替换为字符串[ %REP_str% ] echo 当前修改文件[ %%k ] echo 当前修改行目[ %%i ] set str=%%j if not "!str!"=="" set "str=!str:%Find_str%=%REP_str%!" >>"%tmep%" echo.!str! ) move "%tmep%" "%%k" ) set /a total=!sum!-1 echo. echo 总计查找了!total!个文件(含文件夹) echo 执行完毕 echo. cd %~dp0 if exist %tmep% del /f %tmep% pause set sum=0 cls goto aa |
比如我有文件夹下有很多的lrc文件,想把里面的谢霆锋换成pppboy,那么先运行,弹出设置窗口:
“.”代表当前文件夹,谢霆锋和pppboy是要替换的。
然后关闭就行,可以看到把里面的30个谢霆锋换成了pppboy。
thanks:魔幻幽灵