DOS(bat)字符串替换原理
把字符串“c:/test/1”中的“/”全部替换成“//”的原理:
(假设"C:/TEST/1”字符串已存在VAR变量中:)
C:/WINDOWS>set"var=C:/TEST/1"
(将var变量中的字符串里"/"字符全部替换成"//")
C:/WINDOWS>set"var=%var:/=//%"
(显示var变量中的内容)
C:/WINDOWS>echo%var%
C://TEST//1
结果为:C://TEST//1,已全部替换完成。
下面给几个其他网友给的例子
文件字符串替换
@echooff echo*****Replace"abcd"as"ABCD"***** setstrFilePath=C:\Users\Leez\Desktop\TestBat\TestSource.txt setstrOld=abcd setstrNew=ABCD setlocalenabledelayedexpansion for/f"tokens=*"%%iin(%strFilePath%)do( set"var=%%i" ifnot!var!.==.( set"var=!var:%strOld%=%strNew%!" echo!var!!>>%strFilePath%.bk ) ) move/y%strFilePath%.bk%strFilePath% pause
例子二:
@echooff setlocalenabledelayedexpansion setfile= set/pfile=请输入要操作的文件名称(包括扩展名): set"file=%file:"=%" for%%iin("%file%")dosetfile=%%~fi echo. setreplaced= set/preplaced=请输入即将被替换的内容: echo. setall= set/pall=请输入替换字符串: for/f"delims="%%iin('type"%file%"')do( setstr=%%i set"str=!str:%replaced%=%all%!" echo!str!>>"%file%"_tmp.txt ) copy"%file%""%file%"_bak.txt>nul2>nul move"%file%"_tmp.txt"%file%" start"""%file%"
笔者将它更改一下
把16改为17
@echooff setlocalenabledelayedexpansion setfile=c:\ProgramFiles\hndsclient\ds\GetFile.ini set"file=%file:"=%" for%%iin("%file%")dosetfile=%%~fi echo. setreplaced=16 echo. setall=17 for/f"delims="%%iin('type"%file%"')do( setstr=%%i set"str=!str:%replaced%=%all%!" echo!str!>>"%file%"_tmp.txt ) copy"%file%""%file%"_bak.txt>nul2>nul move"%file%"_tmp.txt"%file%" start"""%file%"