This Lösung schlägt vor, eine innere FOR-Schleife innerhalb einer äußeren FOR-Schleife durch Verwenden der BREAK-Variable zu unterbrechen und den gesamten Schleifencode innerhalb "wenn nicht definiert break" Klammer zu halten. Es funktioniert jedoch nicht in dem Fall unten, wo die "gesetzten" inneren Klammern sich mit jeder äußeren Schleifeniteration ändern, um die Gesamtlaufzeit zu minimieren, und ECHO wird verwendet, um zu überprüfen, ob die innere Schleife noch eine potentiell lange vars-Liste durchläuft wenn der Code innerhalb der IF-Bedingung nicht ausgeführt wird. Ohne ECHO ist es schwer zu überprüfen.Brechen einer Batch-FOR-Schleife mit einer Änderungsmenge
Die Frage ist: Gibt es eine Möglichkeit, die innere Schleife zu brechen, falls sich ihr "Set" ändert?
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "vars=1 2 3 4 5 6" & set "cars= a b c d e f"
for %%p in (%vars%) do (set "break=" & echo/
for %%k in (!cars!) do (echo '!break!'
if not defined break (set "%%k=%%p" & echo %%k=%%p
set "cars=!cars: %%k=!" & echo '!cars!' & set break=TRUE)))
exit /b
:: Output
''
a=1
' b c d e f'
'TRUE'
'TRUE'
'TRUE'
'TRUE'
'TRUE'
''
b=2
' c d e f'
'TRUE'
'TRUE'
'TRUE'
'TRUE'
''
c=3
' d e f'
'TRUE'
'TRUE'
'TRUE'
''
d=4
' e f'
'TRUE'
'TRUE'
''
e=5
' f'
'TRUE'
''
f=6
''
Verwandte: [.bat aus mehreren verschachtelten Schleife brechen, nachdem die entsprechende Liste Finishing] (http://stackoverflow.com/questions/37040273/bat-break-out-of-multiple-nested-loop Nach der Fertigstellung der jeweiligen Liste/37041525 # 37041525) – aschipfl
Gibt es einen Tippfehler: 'uars' (eingestellt, aber nie benutzt) und' cars' (nie voreingestellt)? – aschipfl
Korrigiert. Vielen Dank. :) – sambul35