Batch批处理如何仅对包含指定文本的行执行查找替换
Batch 按条件行替换文本实现方案
用Windows原生批处理就能完成这个需求,不用装额外工具,逻辑是逐行读文件,命中目标关键词的行替换行首指定内容,其他行原封不动输出,最后用处理好的内容替换原文件。
可用脚本
把下面的代码存成.bat文件,把里面的文件路径改成你自己要处理的文本文件路径,双击运行就行:
@echo off setlocal enabledelayedexpansion :: 把下面test.txt换成你实际要处理的文件路径 set "target=test.txt" set "tmpfile=%temp%\tmp_%random%.txt" > "%tmpfile%" ( for /f "usebackq delims=" %%l in ("%target%") do ( set "line=%%l" rem 检查当前行是否包含LineToReplace if "!line:LineToReplace=!" neq "!line!" ( rem 只替换行首的7,为2,,不会改动行中间的相同内容 echo 2!line:~1! ) else ( rem 不匹配的行直接原样输出 echo !line! ) ) ) :: 替换原文件 move /y "%tmpfile%" "%target%" >nul endlocal
说明
- 脚本用临时文件做中转,不会因为读写冲突把原文件写坏
- 替换规则完全匹配需求:只有包含
LineToReplace的行会被修改,且仅替换行开头的7,为2,,行内其余内容、其他不匹配行都不会改动 - 如果处理的文件有乱码,先把文件转成ANSI编码再运行脚本即可
内容的提问来源于stack exchange,提问作者Xemles
相关产品推荐
相关产品推荐

