Die FOR-Anweisung ist ein Befehl, mit dem Sie Befehle mehrmals „schleifen“ oder wiederholen können. Es ist der FOR-Anweisung in mehreren Programmiersprachen sehr ähnlich. Die FOR-Anweisung wird häufig in Batchdateien verwendet, kann aber auch direkt in der Befehlszeile verwendet werden.

Zur Erinnerung: Die allgemeine Form der FOR-Schleife lautet:

FOR %variable IN (set) DO command [command-parameters]

Wenn ‚Variable‘ ein einzelner Buchstabe ist, gibt ‚(Satz)‘ einen Satz von einer oder mehreren Dateien an, ‚Befehl‘ ist der Befehl zur Eingabeaufforderung, der für jede Datei im Satz ausgeführt werden soll, und ‚Befehlsparameter‘ sind optional Parameter, die an ‚Befehl‘ übergeben werden sollen.

Angenommen, Sie haben mehrere COM-DLL-Dateien erhalten, die Sie zur Registrierung in der Windows-Registrierung benötigen. Sie können sie alle in einem Ordner ablegen und dann den folgenden Befehl in diesem Ordner ausführen:

C:\DLLs> FOR %i IN (*.dll) DO regsvr32 /s %i

Für jede DLL-Datei, die im aktuellen Verzeichnis gefunden wird, wird das Programm regsvr32 ausgeführt. (Der Schalter „/ s“ weist regsvr32 einfach an, seine Arbeit stillschweigend auszuführen.) Die verwendete Variable („% i“) unterscheidet zwischen Groß- und Kleinschreibung und nimmt nacheinander den Wert jeder DLL-Datei an. Der Name der DLL-Datei wird dann mit derselben Variablen „% i“ an das Programm regsvr32 übergeben.

Eine Variante der allgemeinen FOR-Schleife verwendet den Schalter / L und hat die allgemeine Form:

FOR /L %variable IN (start,step,end) DO command [command-parameters]

Dies führt eine Schleife aus, in der% variable zuerst auf ’start‘ gesetzt und um ’step‘ erhöht wird, bis der Wert ‚end‘ erreicht wird. (Diese Verwendung sollte Programmierern sehr vertraut sein.) Nehmen wir also an, Sie müssen die Liste der Zahlen von 1 bis 5 anzeigen. Sie können dies folgendermaßen tun:

C:\> FOR /L %i IN (1,1,5) DO @echo %i

Eine andere Variante der FOR-Schleife verwendet den Schalter / D und hat diese allgemeine Form:

FOR /D %variable IN (set) DO command [command-parameters]

Wenn bei dieser Variante ’set‘ Platzhalter enthält, arbeitet der Befehl mit Verzeichnisnamen anstelle von Dateinamen. Dies ist beispielsweise nützlich, wenn Sie eine Reihe von Dateien aus einem Verzeichnisbaum kopieren und alle Dateien in einem Verzeichnis ablegen möchten.

Zum Beispiel habe ich ein Verzeichnis namens \ Temp. Es enthält Unterverzeichnisse mit den Namen \ Temp \ Temp2 und \ Temp \ Barry. Die Verzeichnisse \ Temp \ Barry und \ Temp \ Temp2 enthalten Dateien, die ich kopieren möchte. Wenn ich alle Dateien (ohne die Verzeichnisstruktur) im \ Temp-Baum in ein Verzeichnis namens \ Files kopieren wollte, könnte ich dies folgendermaßen tun:

C:\Temp> FOR /D %i IN () DO Copy %i\.* \Files

Ich habe bis zum Ende das gelassen, was ich für die esoterischste Form der FOR-Schleife halte. Es scheint, dass Sie mit dem Schalter / F fast alles tun können – wenn Sie nur herausfinden können, wie Sie ihn verwenden. Die allgemeine Form lautet:

FOR /F "options" %variable IN (`command`) DO command [command-parameters]

(Leider passt nicht alles in eine Zeile.) Es gibt mehrere Optionen, die Sie verwenden können, und der erste Befehl (der von den rückwärtigen Apostrophen umgeben ist) kann ein beliebiger Befehl zur Eingabeaufforderung sein. Hier ist ein Beispiel für die Verwendung:

FOR /F "Usebackq Delims==" %i IN (`dir/b c:\temp\a*.tmp`) DO @echo c:\temp\%i | Findstr /f:/ "a b c"

(Leider passt nicht alles in eine Zeile.) Dieser Befehl führt einen DIR / B-Befehl für C: \ Temp \ A.tmp aus. Für jede gefundene Datei wird der Dateiname wiedergegeben und an den Befehl Findstr weitergeleitet, der nach allen Zeilen sucht, die ein „a“, „b“ oder „c“ enthalten. Zugegeben, eine ziemlich seltsame Sache, aber zumindest zeigt sie, wie man / F verwenden kann. Ich schlage vor, Sie tun FOR /? *, Um eine vollständige Liste aller Optionen zu erhalten, und dann sind Sie im Grunde nur an Ihre Vorstellungskraft gebunden, um herauszufinden, wie Sie es verwenden sollen.

Sie können den Befehl FOR auch in einer Batchdatei verwenden. Das einzige, was anders ist, ist, dass Sie die% -Zeichen verdoppeln, während Sie in der Befehlszeile nur ein% -Zeichen verwenden. Wenn beispielsweise das zweite obige Beispiel in eine Batch-Datei eingefügt würde, würde dies folgendermaßen aussehen:

FOR /L %%i IN (1,1,5) DO @echo %%i

Dieser Tipp (13196) gilt für Windows 7, 8 und 10.