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