编辑文件的第 N 行

除了 replaceappend>>>)之外,批处理文件没有内置的替换文件的第 1 行的方法。使用 for 循环,我们可以模拟这种功能。

@echo off
set file=new2.txt

call :replaceLine "%file%" 3 "stringResult"

type "%file%"
pause
exit /b

:replaceLine <fileName> <changeLine> <stringResult>
setlocal enableDelayedExpansion

set /a lineCount=%~2-1

for /f %%G in (%~1) do (
    if !lineCount! equ 0 pause & goto :changeLine
    echo %%G>>temp.txt
    set /a lineCount-=1
)

:changeLine
echo %~3>>temp.txt

for /f "skip=%~2" %%G in (%~1) do (
    echo %%G>>temp.txt
)

type temp.txt>%~1
del /f /q temp.txt

endlocal
exit /b
  • 主脚本调用函数 replaceLine,文件名/要更改的行/和要替换的字符串。

  • 函数接收输入

    • 它遍历所有行,并在替换行之前将它们转换为临时文件
    • 它将替换行添加到文件中
    • 它继续输出到文件的其余部分
    • 它将临时文件复制到原始文件
    • 并删除临时文件。
  • 主脚本获取控制权,结果是 type