批处理替换文件里的字符后,怎么不改文件的编码格式?
bat吧
全部回复
仅看楼主
level 1
InhumanBeauty 楼主
我写的是先去读取Change1.conf文件,获取到里面都有那些文件需要字符替换的,获取完后,把文件copy到文件夹B中,做字符替换,然后在读取Change.conf文件,需要替换的字符strOld=替换前字符,strNew=置换后字符。
现在文件夹A里有两种编码格式,utf8和SJIS两种格式。我直接把文件夹A里的文件copy到文件夹B,原来的编码格式不会变。但是施行替换文件夹B里的文件字符后,utf8文件编码格式就变了,导致了乱码,我在.bat文件最上面加上了chp 65001 就可以转换过来了,但是SJIS编码格式的就强制成了utf8的,乱码了!想请教下,有没有办法文件夹B里的文件保持原文件编码格式?
图片是我写的.BAT,请大神指点下
@璐村惂鐢ㄦ埛_000076K馃惥 '批处理文件开始'
set source_path =C:\202003
set real_path =C:\202004
for /f "delims=" %%i in (change.conf) do (
echo %%i
if exist %source_path %\%%i (
copy /y %source_path %\%%i C:\202004
)
)
rem enter the replacement folder
cd c:\202004
echo ***** Replace "AAAA" as "BBBB" *****
rem update Field
FOR /F "eol=; tokens=2,2 delims==" %%i IN ('findstr /i "strOld" C:\Users\LiQiang\Desktop\Change1.conf') DO set strOld=%%i
FOR /F "eol=; tokens=2,2 delims==" %%i IN ('findstr /i "strNew" C:\Users\LiQiang\Desktop\Change1.conf') DO set strNew=%%i
set strOld=%strOld%
set strNew=%strNew%
rem yanchibianliangkuozhan
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir c:\202004\*.* /b') do (
set "var=%%i"
if not !var!.==. (
for /f "tokens=*" %%j in (!var!) do (
set "tmp=%%j"
if not !tmp!.==. (
set "tmp=!tmp:%strOld%=%strNew%!"
echo !tmp!>>temp.txt
)
)
move temp.txt !var!
)
)
pause
2020年03月27日 16点03分 1
level 9
用notepad++就行了,自动识别编码,可批量对文本进行替换,你要用bat那你就加上编码识别和编码转换
2020年03月28日 06点03分 2
用EmEditor和sakura两种便编辑器,也有编码识别。我加上了编码转换,但是文件下的文件分两种编码格式,我要是加上了utf8的编码格式,另一种的编码格式也会强制转成utf8,请问一下,有什么办法可以满足两种编码格式?
2020年03月29日 09点03分
@InhumanBeauty 所以说要加上编码自动识别,识别后再各自以不同编码处理,但你肯定不会写,所以还是用编辑器吧
2020年03月29日 13点03分
1