我有一个批处理文件,其中包含带continue
的嵌套循环 - 就像命令:
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
)
)
但是当if
语句第一次为真时,它不会进一步迭代。我只获得1_256.txt
的文本文件。所以似乎goto CONTINUE
有问题。我的批处理文件出了什么问题?
答案 0 :(得分:7)
goto :Label
内部的{p> ()
像for
循环一样打破了块上下文,因此:Label
之后的所有内容都被视为在块之外。因此,您需要将if
条件反转为ths's answer演示不需要goto
,或者将代码片段goto
和:Label
放入子例程中像这样使用call
:
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
答案 1 :(得分:3)
LEQ
?echo
。
所以这将是
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
)
)