如何通过批处理在txt文件含指定单词的行前后各插入一行内容
匹配指定内容行前后插入文本的批处理实现
以下是修改后可直接运行的代码:
@echo off setlocal enabledelayedexpansion :: 可自定义修改以下三个参数 set "search_key=rose" set "insert_before=before" set "insert_after=after" for %%g in (*.txt) do ( >"temp.txt" ( for /f "usebackq delims=" %%h in ("%%~g") do ( echo "%%h" | findstr /c:"%search_key%" >nul if !errorlevel! equ 0 ( echo %insert_before% echo %%h echo %insert_after% ) else ( echo %%h ) ) ) move /y "temp.txt" "%%~g" ) endlocal
关键逻辑说明
- 开启延迟变量扩展
enabledelayedexpansion,保证循环内部可以正常读取实时更新的errorlevel返回值 - 调用
findstr命令逐行匹配目标关键词,/c参数保证关键词包含空格时也能精准匹配,>nul屏蔽匹配过程的输出内容 - 匹配成功时(
errorlevel返回值为0)先输出前置插入内容、再输出原行、最后输出后置插入内容;未匹配到关键词的行直接输出原内容 - 所有内容写入临时文件后,直接替换原txt文件完成修改
注意事项
- 执行脚本前建议先备份目标txt文件,避免误操作导致内容丢失
- 如果搜索关键词包含批处理保留特殊字符(如
&、|、<等),需要给特殊字符前加^转义 - 当前实现默认跳过原文件中的空行,如有保留空行的需求,可额外调整内层
for /f的参数逻辑
内容的提问来源于stack exchange,提问作者Batch1234
相关产品推荐
相关产品推荐

