因为你的代码存在逻辑上的bug
@echo off
setlocal enabledelayedexpansion
set b=0
set c=0
set d=0
set /p fstrow=<a.txt
>>c:\test\!c!.txt echo %fstrow%
set /a b=!b!+1
call :3 1
goto :eof
:3
for /f "skip=%1" %%a in (a.txt) do (
>>c:\test\!c!.txt echo %%a
set /a b=!b!+1
if !b! geq 10 (
set /a c=!c!+1
set /a d=!d!+10
set b=0
call :3 !d!
goto :eof
)
)