"continue" equivalent command in nested loop in Windows Batch
Solution 1
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
Solution 2
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
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 LEQ %%j test.exe 0 %%i %%j 100000 > "%%i_%%j".txt
)
)
arnobpl
I am currently a Research Assistant at University at Buffalo. My research interest includes Security and Privacy, Computer Network, Operating System, Computer Architecture, Embedded System, Cloud Computing. I have completed my B.Sc. in Computer Science and Engineering from Bangladesh University of Engineering and Technology. I have also worked as a Software Engineer in Reve Systems.
Updated on July 16, 2022Comments
-
arnobpl almost 2 years
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 upto1_256.txt
. So it seems thatgoto CONTINUE
has a problem. What is wrong with my batch file? -
arnobpl about 8 yearsThanks. That solves my purpose without using any
continue
-like command. However, I assume, there is no "good" (user-friendly)continue
equivalent thing in Windows batch scripting. I think, to accomplish such thing in complex scenario, some "dirty coding trick" is needed.