Ausbrechen der verschachtelten for-Schleife in der Batch-Datei

8

Nachdem ich zweimal auf dieses Problem gestoßen bin, dachte ich, ich würde es hier posten, um zu sehen, ob jemand weiß, wie man das schafft.

Ich kann scheinbar nicht aus verschachtelten Loops mit goto ausbrechen, da es so aussieht, als wenn es aus der inneren Schleife ausbricht. Die Klammern stimmen dann nicht überein, weil es nie die innere schließende Schleife erreicht hat.

Ich habe das auf ein sehr einfaches Beispiel reduziert

%Vor%

Dies führt zu dem Fehler

%Vor%

Ich dachte, dass vielleicht das Hinzufügen von zusätzlichen Klammern das Problem lösen könnte, aber es wird nicht helfen, wenn ich nicht weiß, dass ich brechen werde, wenn es eine bedingte Pause ist, ist es das gleiche Problem.

Gibt es eine einfache Alternative zum Ausbrechen der inneren Schleife in die äußere, selbst wenn es sich um eine bedingte Unterbrechung handelt, die if und else verwendet?

    
Bali C 28.01.2013, 12:45
quelle

5 Antworten

10

Brechen Sie, indem Sie die innere Schleife in ein Etikett einfügen.

%Vor%     
Gaurav Kolarkar_InfoCepts 28.01.2013, 13:53
quelle
5

Sie können auch den Rest der Iterationen nach dem Bruch mit einer Kontrollvariablen weglassen, die an FOR gebunden ist:

%Vor%

Diese Methode bewahrt den Code des verschachtelten for-body an seinem ursprünglichen Platz und erlaubt es, Brüche an mehr als einem Punkt innerhalb des for-body zu setzen.

Antonio

    
Aacini 02.02.2013 01:37
quelle
0

Der Vorschlag von Antonio ist ziemlich gut. Ich habe es in meinem Beispiel verwendet, um einige CSV- oder HTML-Dateien aus einer Dateiliste zu analysieren. (für die Schleife verschachtelt). Der erste Blick analysiert die Dateiliste, der zweite analysiert den Inhalt jeder Datei. Die Separatoren sind entweder; oder /.

%Vor%     
Markus Hanslin 14.12.2016 08:45
quelle
0

DEFINED kann für mehrere Gründe böse sein. Ich schlage nicht vor, es zu verwenden, wenn Sie nicht genau wissen, wie es funktioniert und alle möglichen Anwendungsfälle.

  

Es ist ratsam, keine Trennzeichen (Leerzeichen,   Kommas usw.) im Variablennamen, z. B. IF DEFINED _variable   wird häufig fehlschlagen, wenn der Variablenname ein Trennzeichen enthält.

Eine sicherere Antwort, die auch EXIT oder GOTO nicht verwendet:

%Vor%

Ausgabe:

%Vor%     
kayleeFrye_onDeck 16.02.2017 05:10
quelle
-1

Können Sie weitere Informationen zu Ihrer Anforderung bereitstellen? In der Zwischenzeit können Sie dies versuchen, wenn es Ihrer Anforderung entspricht. halten Sie mich auf dem Laufenden, wenn Sie mehr brauchen.

%Vor%     
quelle

Tags und Links