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?
it seems what you are actually trying to accomplish is a poor man's "less or equal than".
In this case, why not use the real "less or equal than", which is
LEQ
?Additionally, you seem to want the output of test.exe in the "%%i_%%j".txt file, so don't use
echo
.So this would be
goto :Label
inside of a block of code()
like afor
loop breaks the block context, so everything after the:Label
is treated as being outside of the block. So you need to invert theif
condition to not needgoto
as ths's answer demonstrates, or you place the code fragment withgoto
and:Label
into a subroutine and usecall
like this: