bat批处理修改文本文档指定行的内容?

可以使用批处理中的for命令和if命令配合完成这个任务。具体的步骤如下:

@echo off

setlocal enabledelayedexpansion

set target="d:\tt\*.tog"

set pattern1=4

set content1=7701

set pattern2=-6

set content2=9912

for /r %target% %%a in (*) do (

set count=0

for /f "delims=" %%b in (%%a) do (

set /a count+=1

if !count!==%pattern1% (

echo %content1%>>temp.txt

) else if !count!==%pattern2% (

echo %content2%>>temp.txt

) else (

echo %%b>>temp.txt

)

)

move /y temp.txt "%%~dpa%%~na.tog" >nul

)

其中,%target%代表需要批量修改的目标文件,%pattern1%和%pattern2%分别代表第四行和倒数第六行及其后面的内容需要修改,%content1%和%content2%分别代表将要替换的内容。

代码使用了两个循环:第一个for循环用于遍历目标目录下所有的.tog文件;第二个for循环用于遍历每个文件的所有行,并在需要修改的行进行相应的操作。通过变量count计数,如果当前行是需要修改的行,则输出新的内容到一个临时文件temp.txt中;否则直接将当前行原样输出。最后将临时文件重命名为原文件名,完成修改。

请注意,这个代码可能会将原文件名中的大写字母全部转换为小写字母。如果需要保留原文件名的大小写,可以修改move命令为:

move /y temp.txt "%%~dpa%%~na%%~xa" >nul