Loop

Führt eine Reihe von Befehlen wiederholend 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. Fehlt dieser Parameter, läuft die Schleife endlos weiter, bis ein Break oder Return auftritt.

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

Da Dateimuster-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 ein Skript üblicherweise besser lesbar und verwaltbar machen. 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 Dateimuster-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 wie Dateimuster-Schleife und Parsende Schleife). Zum Beispiel:

Loop {
    ...
}
Loop %AnzahlWiederholungen% {
    ...
}

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

Siehe auch

Until, While-Schleife, For-Schleife, Dateimuster-Schleife, Registry-Schleife, Datei-lesende Schleife, Parsende Schleife, Break, Continue, Blöcke

Beispiele

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

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
}