Ok, I did some testing. Here are my results:
First we have a file a.a:
Code: Select all
Record_01
Record_02
Record_03
Record_04
Record_05
Record_06
Record_07
Record_08
Record_09
Record_10
Record_11
Record_12
Record_13
Record_14
Record_15
Record_16
Record_17
Record_18
Record_19
Record_20
Record_21
Record_22
Record_23
Record_24
Record_25
Record_26
Record_27
Record_28
Record_29
Record_30
Record_31
Record_32
Record_33
Record_34
Record_35
Record_36
Record_37
Record_38
Record_39
Record_40
Then we have a.cmd:
Code: Select all
@echo off
set /a cnt=0
set ctrl=1
for /f "tokens=1 skip=10 delims=" %%m in (a.a) do call :DOSOMETHING %%m
:DOSOMETHING1
set /a cnt=0
set ctrl=2
for /f "tokens=1 skip=20 delims=" %%m in (a.a) do call :DOSOMETHING %%m
:DOSOMETHING2
set /a cnt=0
set ctrl=3
for /f "tokens=1 skip=30 delims=" %%m in (a.a) do call :DOSOMETHING %%m
:END
echo HERE
REM only exit really stops the program - but this is not what I want.
goto :EOF
exit /b
exit
:DOSOMETHING
set /a cnt=cnt + 1
echo %ctrl% %1
if %cnt%==5 if %ctrl%==1 goto :DOSOMETHING1
if %cnt%==5 if %ctrl%==2 goto :DOSOMETHING2
if %cnt%==5 if %ctrl%==3 goto :END
goto :EOF
Result should be like this:
Code: Select all
1 Record_11
1 Record_12
1 Record_13
1 Record_14
1 Record_15
2 Record_21
2 Record_22
2 Record_23
2 Record_24
2 Record_25
3 Record_31
3 Record_32
3 Record_33
3 Record_34
3 Record_35
HERE
but it is not. Program still reads input file and adds lots of output (see below):
As you can see the program should ECHO 5 lines each time and then echo HERE and should stop there.
So, the question is: why GOTO :EOF does not work? Not even EXIT /B. Only EXIT terminates the program.
I even tried with %%m, %%n, %%o (if there is an internal context that might interfere).
Any ideas?
Thanks,
Saso
Actual output (complete):
Code: Select all
1 Record_11
1 Record_12
1 Record_13
1 Record_14
1 Record_15
2 Record_21
2 Record_22
2 Record_23
2 Record_24
2 Record_25
3 Record_31
3 Record_32
3 Record_33
3 Record_34
3 Record_35
HERE
3 Record_36
3 Record_37
3 Record_38
3 Record_39
3 Record_40
HERE
3 Record_26
3 Record_27
3 Record_28
3 Record_29
3 Record_30
3 Record_31
3 Record_32
3 Record_33
3 Record_34
3 Record_35
3 Record_36
3 Record_37
3 Record_38
3 Record_39
3 Record_40
3 Record_31
3 Record_32
3 Record_33
3 Record_34
3 Record_35
HERE
3 Record_36
3 Record_37
3 Record_38
3 Record_39
3 Record_40
HERE
3 Record_16
3 Record_17
3 Record_18
3 Record_19
3 Record_20
3 Record_21
3 Record_22
3 Record_23
3 Record_24
3 Record_25
3 Record_26
3 Record_27
3 Record_28
3 Record_29
3 Record_30
3 Record_31
3 Record_32
3 Record_33
3 Record_34
3 Record_35
3 Record_36
3 Record_37
3 Record_38
3 Record_39
3 Record_40
2 Record_21
2 Record_22
2 Record_23
2 Record_24
2 Record_25
3 Record_31
3 Record_32
3 Record_33
3 Record_34
3 Record_35
HERE
3 Record_36
3 Record_37
3 Record_38
3 Record_39
3 Record_40
HERE
3 Record_26
3 Record_27
3 Record_28
3 Record_29
3 Record_30
3 Record_31
3 Record_32
3 Record_33
3 Record_34
3 Record_35
3 Record_36
3 Record_37
3 Record_38
3 Record_39
3 Record_40
3 Record_31
3 Record_32
3 Record_33
3 Record_34
3 Record_35
HERE
3 Record_36
3 Record_37
3 Record_38
3 Record_39
3 Record_40
HERE