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