@echo off
setlocal enabledelayedexpansion
rem 下面三个文件名自行更改,若路径包含空格注意加引号
set file=a.bat
set nextFile=b.txt
set newFile=c.txt
set num=
set strRows=
rem 指定过滤标号
set "strBegan=:123"
set "strEnd=:asdk"
rem 获得过滤标号行号
for /f "delims=:" %%i in ('findstr /nr "^:" %file%') do set "strRows=!strRows! %%i"
rem 读源文件1到变量
for /f "delims=" %%i in ('findstr .* %file%') do (
set /a num += 1
set "!num!=%%i"
)
rem 对比内容获得需要过滤的开始结束指针
for %%i in (%strRows%) do (
if "!%%i!" == "!strBegan!" set began=%%i
if "!%%i!" == "!strEnd!" set end=%%i
)
rem 下面把3部分打印到新文件中
set /a end -= 1
for /l %%i in (1,1,%began%) do echo,!%%i!>%newFile%
type %nextFile% >>%newFile%
more +%end% %file% >>%newFile%
exit /b 0
稍做修改就可以实现比较通用的效果,不过若是涉及到复杂的文本操作的话还是建议用vbs或者其他第三方工具/。