Loop

Führt eine Reihe von Befehlen wiederholt aus - entweder eine bestimmte Anzahl von Wiederholungen oder bis ein Break auftritt.

Loop , Anzahl

Parameter

Anzahl

Wie viele Male (Iterationen) die Schleife durchgeführt werden soll. Lässt man diesen Parameter weg, wird die Schleife endlos fortgesetzt, bis ein Break oder Return auftritt.

Ist Anzahl eine Variablenreferenz wie %ElementeAnzahl%, kann die Schleife komplett übersprungen werden, wann immer die Variable leer ist oder eine Zahl kleiner als 1 enthält.

Da Datei-Schleifen unterstützt werden müssen, kann Anzahl kein Ausdruck sein. Allerdings kann, wie bei allen nicht-ausdrucksartigen Parametern, ein Ausdruck durch Voranstellen eines Prozent- und Leerzeichens erzwungen werden. Zum Beispiel: Loop % Anzahl + 1. In solchen Fällen wird der Ausdruck nur einmal ausgewertet, direkt vor Beginn der Schleife.

Bemerkungen

Nach einer Schleife erfolgt üblicherweise ein Block (eine Sammlung von Anweisungen), der den Schleifenkörper definiert. Eine Schleife mit nur einer einzigen Anweisung benötigt keinen Block (ein "if" und das dazugehörige "else" werden hierbei als Einzelanweisung angesehen).

Dieser Befehl wird häufig als Endlosschleife benutzt; mit dem Break-Befehl irgendwo im Schleifenkörper kann man bestimmen, wann die Schleife gestoppt werden soll.

Break und Continue sind besser geeignet als Goto, weil sie in der Regel die Übersichtlichkeit und Wartbarkeit eines Skripts erhöhen. Man kann auch eine "While"- oder "Do...While/Until" -Schleife simulieren, indem man die erste oder letzte Anweisung im Schleifenkörper zu einer IF-Anweisung macht, die je nach Bedingung den Break-Befehl ausführt. In der Regel sollte man aber While oder Loop...Until benutzen.

Die interne Variable A_Index enthält die Nummer des aktuellen Schleifendurchlaufs. Sie enthält eine 1, wenn der Schleifenkörper das erste Mal durchgeführt wurde. Beim zweiten Mal enthält sie eine 2; und so weiter. Wenn eine innere Schleife von einer äußeren Schleife umschlossen ist, hat die innere Schleife Vorrang. A_Index funktioniert in jeder Schleifenvariante, einschließlich Datei-Schleifen und Registry-Schleifen; außerhalb einer Schleife enthält A_Index eine 0.

Je nach Bedarf kann der "One True Brace Style" bei normalen Schleifen verwendet werden (aber nicht bei speziellen Schleifen wie Datei-Schleifen und parsende Schleifen). Zum Beispiel:

Loop {
    ...
}
Loop %WiederholungenAnzahl% {
    ...
}

Spezialisierte Schleifen: Mit Schleifen können Dateien, Ordner oder Registry-Einträge automatisch abgerufen werden (einzeln). Siehe Datei-Schleife und Registry-Schleife für Details. Dateilesende Schleifen können den kompletten Inhalt einer Datei zeilenweise durchgehen. Parsende Schleifen können einzelne Felder einer Zeichenkette durchgehen.

Until, While-Schleife, For-Schleife, Datei-Schleife, Registry-Schleife, dateilesende Schleife, parsende Schleife, Break, Continue, Blöcke

Beispiele

Erstellt eine Schleife mit 3 Iterationen (Wiederholungen).

Loop, 3
{
    MsgBox, Iterationsnummer ist %A_Index%.  ; A_Index wird 1, 2 und 3 sein.
    Sleep, 100
}

Erstellt eine Endlosschleife, die aber nach der 25. Iteration unterbrochen wird.

Loop
{
    if (A_Index > 25)
        break  ; Unterbricht die Schleife
    if (A_Index < 20)
        continue ; Überspringt das darunter und startet eine neue Iteration
    MsgBox, A_Index = %A_Index% ; Dies wird nur die Nummern von 20 bis 25 anzeigen
}