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

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

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

1、首先,准备一个conf.ini,内容如下图所示。现在要将title的值修改“我是新标题”。

2、如果ini内的文件比较简单,其次可以直接新生成一个。

3、运行一下代码,效果如下,可以看到ini内容已经修改。

4、假设不知道ini的具体内容,只是知道其中有“我是新标题”,现在要将“我是新标题”替换成"newtitle"。

5、如果ini文件原内容如下图所示。

6、运行脚本后,得到的新ini文本就变成如下图所示了。因为我们生成了中间文件,所以在脚本最后,一定要记得删除该文件 del  tmp.txt。

注意事项:

批处理应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND. COM或者CMD.EXE)解释运行。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-08
指定行也可以:本批指定了第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

测试文本内容:

有一个配置文本文件,首先要
查找其中的某行(假定为第5行)的内容
是否与指定字符串(假定指
定字符串为“
DEFA=TESTa
”)完全相同,如不是,则
用指定的字符串将该行的内容替换掉,请问
用批处理文件如何实现?

定字符串为“
DEFA=TESTa
”)完全相同,如不是,则
用指定的字符串将该行的内容替换掉,请问
用批处理文件如何实现?

有一个配置文本文件,首先要
查找其中的某行(假定为第5行)的内容
是否与指定字符串(假定指
定字符串为“
DEFA=TEST
”)完全相同,如不是,则
用指定的字符串将该行的内容替换掉,请问
用批处理文件如何实现?

定字符串为“
DEFA=TESTa
”)完全相同,如不是,则
用指定的字符串将该行的内容替换掉,请问
用批处理文件如何实现?本回答被提问者采纳
第2个回答  推荐于2017-09-20
比如有个a.ime文件,要把他里面的123456改成654321方法如下
@echo off
ren a.ime a.txt
setlocal Enabledelayedexpansion
for /f "tokens=*" %%a in (a.txt) do (
set var=%%a
set var=!var:123456=654321!
echo !var!>>b.txt
)
endlocal
ren b.txt a.ime
del a.txt

把上面的内容保存为批处理文件,并让他和ime文件放同一文件夹下(桌面也可以)
第3个回答  2015-08-14
打开文本文档,右上角有查找替换,操作下就行了。
第4个回答  2009-08-31
@echo off
set/p .=请输入指定字符串:
for /f "tokens=1,2 delims==" %%a in ("%.%")do (
set "a=%%a"
set "b=%%b"
)
for /f "tokens=1,2 delims==" %%b in (config.ini)do (
if %%b==%a% (echo/%a%=%b%>>config_.ini
) else echo %%b=%%c>>config_.ini
)
move config_.ini config.ini
start config.ini

这里假定是config.ini文件!
相似回答