編輯檔案的第 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
。