编辑文件的第 N 行
除了 replace
和 append
(>
和 >>
)之外,批处理文件没有内置的替换文件的第 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
。