I have a batch file which contains nested loop with continue
-like command:
for %%i in (1, 2, 4, 8, 16, 32, 64, 128, 256) do (
for %%j in (1, 2, 4, 8, 16, 32, 64, 128, 256) do (
if %%i gtr %%j goto CONTINUE
test.exe 0 %%i %%j 100000 > "%%i_%%j".txt
:CONTINUE
rem
)
)
But when if
statement is true for the first time, it does not iterate further. I only get text files upto 1_256.txt
. So it seems that goto CONTINUE
has a problem. What is wrong with my batch file?
goto :Label
inside of a block of code ()
like a for
loop breaks the block context, so everything after the :Label
is treated as being outside of the block. So you need to invert the if
condition to not need goto
as ths's answer demonstrates, or you place the code fragment with goto
and :Label
into a subroutine and use call
like this:
for %%i in (1, 2, 4, 8, 16, 32, 64, 128, 256) do (
for %%j in (1, 2, 4, 8, 16, 32, 64, 128, 256) do (
call :SUB %%i %%j
)
)
exit /B
:SUB outer inner
if %1 gtr %2 goto CONTINUE
test.exe 0 %1 %2 100000 > "%1_%2.txt"
:CONTINUE
rem
exit /B
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With