我已经花了一些时间在线寻找答案,但我一直无法工作。
我有一个大约1700行的文本文件。在这些行中的任何一行都没关系,但我总是想用相同的字符串替换第5行。
例如,文本文件名为test.txt。这些界限如下:
我总是希望用set字符串替换第5行(总是以FMOD开头但后面有随机的东西)。这必须要完成很多次,并且现在是手动完成的,如果可以通过批处理文件来完成,无论如何都可以使用,而其他人可能想要使用它,所以我真的很有帮助,所以我希望这样做所有本地都在批处理文件中,而不使用其他文件。
事先得到很多赞赏,
马特
答案 0 :(得分:1)
使用纯原生批次:
@echo off
setlocal disableDelayedExpansion
set "file=yourFile.txt"
set "newLine5=NewLine5Here"
>"%file%.new" (
for /f "delims=" %%A in ('findstr /n "^" "%file%"') do for /f "delims=:" %%N in ("%%A") do (
set "ln=%%A"
setlocal enabableDelayedExpansion
if "!ln:~0,6!" equ "5:FMOD" (echo(!newLine5!) else echo(!ln:*:=!
endlocal
)
)
move /y "%file%.new" "%file%" >nul
以上限制为每行约8191个字节。 1700线的速度可能并不差,但速度相对较慢。
如果你使用我的JREPL.BAT utility生活非常简单 - 一个混合的JScript /批处理脚本可以对文件内容进行正则表达式查找/替换,包括合并用户提供的JScript代码来定制结果的选项。它是纯脚本,可以在任何Windows机器上从XP开始本地运行。
此JREPL解决方案 比任何纯批处理解决方案更快,更强大:
jrepl "^FMOD.*" "NewLine5Here" /jbegln "skip=(ln!=5)" /f "yourFile.txt" /o -