批处理文件如何将一个文本的内容在另一个文本中的指定行开始复制?

在电脑的D盘根目录下有一个文件名为copy.txt,在E盘根目录下有一个目标文件a.bat,想将copy.txt的所有内容拷贝到a.bat中,从第17行开始插入,请问下该如何实现该功能?

把下面的批处理存为myinsertbat.bat,双击运行后,e盘就会出现新的a.bat,原来的a.bat会存为a_backup.bat。
@echo off
@setlocal enabledelayedexpansion
@if exist e:\a_backup.bat goto E
@set n=1
@for /f "delims=" %%i in (e:\a.bat) do (
@if "n"=="17" goto N
@echo %%i >>e:\_a.bat
@set /a n=n+1
)
:N
@type d:\copy.txt >>e:\_a.bat
@for /f "skip=16 delims=" %%j in (e:\a.bat) do @echo %%j >>e:\_a.bat
@ren e:\a.bat e:\a_backup.bat
@ren e:\_a.bat e:\a.bat
:E追问

谢谢,使用了你的代码后实现了功能,但是执行的时候报错命令语法不正确,然后插入的时候会把之前17行后原文件的内容复制一次。。。。。

追答

不好意思,中间有一点失误了。之前是插入到第17行之前,以下代码应该是插入到第17行之后。
@echo off
@setlocal enabledelayedexpansion
@if exist e:\a_backup.bat goto E
@set n=1
@for /f "delims=" %%i in (e:\a.bat) do (
@if "!n!"=="18" goto N
@echo %%i >>e:\_a.bat
@set /a n=n+1
)
:N
@type d:\copy.txt >>e:\_a.bat
@for /f "skip=16 delims=" %%j in (e:\a.bat) do @echo %%j >>e:\_a.bat
@ren e:\a.bat e:\a_backup.bat
@ren e:\_a.bat e:\a.bat
:E
您再试一下。

追问

可否留个邮箱交流下,还是有些小问题,截图发给你下。

追答

给您私信了,请查下。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答