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

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

谢谢 314ccp 朋友的方案,可能我要求提的不太清楚,上面我补充了一下,能否再根据补充的意思改进一下你的BAT?
展开
 我来答
百度网友faadf46
高粉答主

2019-12-12 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:74.7万
展开全部

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)解释运行。

睿之锐
推荐于2017-10-08 · TA获得超过1269个赞
知道小有建树答主
回答量:809
采纳率:0%
帮助的人:471万
展开全部
指定行也可以:本批指定了第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
”)完全相同,如不是,则
用指定的字符串将该行的内容替换掉,请问
用批处理文件如何实现?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bjxckj
推荐于2017-09-20 · 超过86用户采纳过TA的回答
知道小有建树答主
回答量:376
采纳率:100%
帮助的人:158万
展开全部
比如有个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文件放同一文件夹下(桌面也可以)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cwxzj4s
2015-08-14 · TA获得超过101个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:65.6万
展开全部
打开文本文档,右上角有查找替换,操作下就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
314ccp
2009-08-31 · TA获得超过5625个赞
知道大有可为答主
回答量:1497
采纳率:0%
帮助的人:2153万
展开全部
@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文件!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式