Commande “continue” équivalente dans la boucle nestede dans Windows Batch

J’ai un fichier batch qui contient une boucle nestede avec la commande continue -like:

 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 ) ) 

Mais if énoncé est vrai pour la première fois, il ne réitère pas davantage. Je ne reçois que des fichiers texte jusqu’à 1_256.txt . Il semble donc que goto CONTINUE ait un problème. Quel est le problème avec mon fichier de commandes?

goto :Label intérieur d’un bloc de code () comme une boucle for rompt le contexte du bloc, donc tout ce qui suit le :Label est traité en dehors du bloc. Donc, vous devez inverser la condition if pour ne pas avoir besoin de goto comme le montre la réponse , ou vous placez le fragment de code avec goto et :Label dans un sous-programme et utilisez un call comme ceci:

 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 

il semble que ce que vous essayez réellement d’accomplir, c’est un «homme pauvre ou égal».
Dans ce cas, pourquoi ne pas utiliser le réel “inférieur ou égal à”, qui est LEQ ?
De plus, vous semblez vouloir la sortie de test.exe dans le fichier .txt “%% i _ %% j”, donc n’utilisez pas echo .

Donc ce serait

 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 ) )