批处理如何实现文本文件中指定行内容的替换?

来源:百度知道 编辑:UC知道 时间:2024/07/08 15:07:21
有一个配置文本文件,首先要查找其中的某行(假定为第5行)的内容是否与指定字符串(假定指定字符串为“DEFA=TEST”)完全相同,如不是,则用指定的字符串将该行的内容替换掉,请问用批处理文件如何实现?
或者说不指定行,而是查找有包含特定字符串那行的内容与指定的字符串的内容是否完全相同,不完全相同就用后者替换,如,假设TXT文件中一定有一行为DEFA="XXXX”,其中"XXXX"是变化的,并且长度不等,而“DEFA=”是固定的并且一定有的,可将“DEFA=”作为关键字符串来找到它所在的行,并用这行的内容与指定的字符串(假定指定字符串为“DEFA=TEST”)进行比较,如不完全相同则用“DEFA=TEST”替换掉该行原来的内容,换句话说就是,如果TXT中含“DEFA=”的那行等号后面的不是“TEST”话就将其换成“TEST”,盼高手给出批处理文件,谢谢!

谢谢 314ccp 朋友的方案,可能我要求提的不太清楚,上面我补充了一下,能否再根据补充的意思改进一下你的BAT?

指定行也可以:本批指定了第5行不等于“DEFA=TEST”则替换为“DEFA=TEST”,等于退出。

@echo off&setlocal Enabledelayedexpansion
if exist "templog.txt" del /q /f /a "templog.txt"
set /p file=请把你要处理的文本文件拖到本窗口:&set "file=!file:"=!"
FOR %%i IN ("%file%") DO set G=%%~dpi&set T=%%~ni&set K=%%~xi&set P=%%~nxi
for /f "tokens=1* delims=:" %%a in ('findstr /n ".*" "%file%"') do (
if %%a==5 (if "%%b" NEQ "DEFA=TEST" (goto P) else Del /f /q /a "templog.txt"&exit)
echo %%b>>"templog.txt"
)
:P
echo DEFA=TEST>>"templog.txt"
more +5 "%file%">>"templog.txt"
ren "%file%" "%T%【%random%】%K%"
copy "templog.txt" "%G%%P%"
del /q /f /a "templog.txt"
start "" "%file%"&exit

测试文本内容:

有一个配置文本文件,首先要
查找其中