Der Befehl: "FOR" ist auf Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. verfügbar
Die Beispiele zum Befehl "FOR"
Der
`FOR`-Befehl in der Windows-Eingabeaufforderung wird verwendet, um Schleifen in Batch-Dateien durchzuführen. Hier sind einige Beispiele:
Beispiel 1: Durchlaufen von Dateien in einem Verzeichnis:
FOR %G IN (Verzeichnis\*) DO ECHO %G
Beschreibung: Dieser Befehl gibt den Namen jeder Datei im angegebenen Verzeichnis aus.
Beispiel 2: Durchlaufen von Dateien mit einer bestimmten Dateierweiterung:
FOR %G IN (Verzeichnis\*.txt) DO ECHO %G
Beschreibung: Gibt den Namen jeder Textdatei im angegebenen Verzeichnis aus.
Beispiel 3: Durchlaufen von Dateien rekursiv in Unterverzeichnissen:
FOR /R Verzeichnis %G IN (*.txt) DO ECHO %G
Beschreibung: Durchläuft rekursiv alle Unterverzeichnisse des angegebenen Verzeichnisses und gibt den Namen jeder Textdatei aus.
Beispiel 4: Durchlaufen von Zahlen in einem bestimmten Bereich:
FOR /L %G IN (1,1,10) DO ECHO %G
Beschreibung: Gibt die Zahlen von 1 bis 10 aus.
Beispiel 5: Durchlaufen von Zeichen in einem String:
FOR %G IN ("Hallo") DO ECHO %G
Beschreibung: Gibt jeden Buchstaben des Worts
"Hallo" aus.
Beispiel 6: Durchlaufen von Dateiinhalten Zeilenweise:
FOR /F "tokens=*" %G IN (Datei.txt) DO ECHO %G
Beschreibung: Durchläuft die Zeilen der Datei
"Datei.txt" und gibt jede Zeile aus.
Beispiel 7: Durchlaufen von Umgebungsvariablen:
FOR %G IN (%PATH%) DO ECHO %G
Beschreibung: Durchläuft die Pfade in der Umgebungsvariable
`PATH` und gibt jeden Pfad aus.
Beispiel 8: Verwendung von `SET` in einer Schleife:
FOR %G IN (1 2 3) DO SET /A Zahl=%G * 2 & ECHO Das Doppelte von %G ist %Zahl%
Beschreibung: Setzt eine Variable
`Zahl` auf das Doppelte der aktuellen Zahl in der Schleife und gibt dies aus.
Beispiel 9: Durchlaufen von Unterverzeichnissen und Dateien:
FOR /R %G IN (*) DO ECHO %G
Beschreibung: Durchläuft rekursiv alle Unterverzeichnisse und Dateien im aktuellen Verzeichnis.
Beispiel 10: Verschachtelte Schleifen:
FOR %G IN (1 2) DO FOR %H IN (A B) DO ECHO %G%H
Beschreibung: Verschachtelt zwei Schleifen und gibt alle Kombinationen von %G und %H aus.
Bitte beachte, dass in Batch-Dateien
`%` durch
`%%` ersetzt werden sollte. Zum Beispiel:
`FOR %G IN (...) DO ECHO %%G`. In der Eingabeaufforderung direkt wird nur ein Prozentzeichen verwendet (
`%`).
"FOR" Auszug aus der Microsoft Windows-Hilfe
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINDOWS>
Führt einen Befehl für jede einzelne Datei für einen Satz von Dateien aus.
FOR %Variable IN (Satz) DO Befehl [Parameter]
%Variable Ein ersetzbarer Parameter bestehend aus einem einzelnen
Buchstaben.
(Satz) Ein Satz von mindestens einer Datei. Platzhalter sind zulässig.
Befehl Befehl, der für jede Datei ausgeführt werden soll.
Parameter Parameter und Optionen für den angegebenen Befehl.
Um den FOR-Befehl in einem Batchprogramm zu verwenden, geben Sie %%Variable
statt %Variable an. Beachten Sie die Groß-/Kleinschreibung bei Variablen-
namen, %i und %I sind nicht identisch.
Wenn die Befehlserweiterungen aktiviert sind, werden folgende
Ergänzungen für den FOR-Befehl unterstützt:
FOR /D %Variable IN (Satz) DO Befehl [Parameter]
Wenn der Satz Platzhalter enthält, dann bezieht sich der FOR-Befehl
auf Verzeichnisse und nicht auf Dateien.
FOR /R [[Laufwerk:]Pfad] %Variable IN (Satz) DO Befehl [Parameter]
Der FOR-Befehl wird ausgehend vom Verzeichnis [Laufwerk:]Pfad (als
Stammverzeichnis) für jedes darunterliegende Verzeichnis ausgeführt.
Wenn kein Verzeichnis nach der /R-Option angegeben ist, wird das aktuelle
Verzeichnis verwendet. Wenn der Satz nur einen einzelnen Punkt als
Zeichen (.) enthält, wird nur die Verzeichnisstruktur aufgelistet.
FOR /L %Variable IN (Start,Schritt,Ende) DO Befehl [Parameter]
Der Satz ist eine Folge von Zahlen von Start bis Ende und der
angegebenen Schrittweite. So erzeugt (1,1,5) die Folge 1 2 3 4 5 und
(5,-1,1) erzeugt die Folge (5 4 3 2 1).
FOR /F ["Optionen"] %Variable IN (Dateiensatz) DO Befehl [Parameter]
FOR /F ["Optionen"] %Variable IN ("Zeichenkette") DO Befehl [Parameter]
FOR /F ["Optionen"] %Variable IN (Befehl) DO Befehl [Parameter]
oder, unter Verwendung der Option "usebackq":
FOR /F ["Optionen"] %variable IN (Dateiensatz) DO Befehl [Parameter]
FOR /F ["Optionen"] %variable IN ('Zeichenkette') DO Befehl [Parameter]
FOR /F ["Optionen"] %variable IN (`Befehl`) DO Befehl [Parameter]
Der Dateiensatz besteht aus einem oder mehreren Dateinamen. Jede Datei
wird geöffnet, gelesen und bearbeitet, dann wird mit der nächsten Datei
des Satzes fortgefahren. Die Bearbeitung einer Datei erfolgt zeilenweise,
jede einzelne Textzeile wird ausgewertet und in die entsprechenden Token
(keinen oder mehrere) zerlegt. Die Befehle in der FOR-Schleife werden dann
mit den Variablenwerten (d.h. den gefunden Zeichenketten bzw. Token)
aufgerufen. Standardmäßig liefert /F den ersten, durch ein Leerzeichen
getrennten Token von jeder Zeile in jeder Datei. Leerzeilen werden
übersprungen. Das standardmäßige Verhalten bei der Analyse kann wahlweise
durch den Parameter "Optionen" überschrieben werden. Das ist eine
Zeichenkette in Anführungszeichen, welche eines oder mehrere Schlüssel-
wörter enthält, um verschiedene Parameter für die Analyse anzugeben. Diese
Schlüsselwörter sind:
eol=c - Gibt das Zeichen für Zeilenendekommentare an
(nur eins).
skip=n - Gibt die Anzahl der Zeilen an, die am Anfang einer
Datei übersprungen werden.
delims=xxx - Gibt einen Satz von Trennzeichen an. Diese ersetzen
die Standardtrennzeichen TAB und Leerzeichen.
tokens=x,y,m-n - Gibt an, welche Token von jeder Zeile an die
FOR-Schleife weitergegeben werden.
Das führt dazu, dass zusätzliche Variablen erzeugt
werden. Mit der Form m-n wird dabei ein Bereich vom
m-ten bis zum n-ten Token angegeben. Wenn das letzte
Zeichen ein Sternchen ist, wird eine zusätzliche
Variable deklariert, die den verbleibenden Text
dieser Zeile enthält.
usebackq - Gibt an, dass die neue Semantik in Kraft ist,
wobei eine Zeichenkette in umgekehrten Anführungs-
zeichen als Befehl ausgeführt wird und eine
Zeichenkette in Anführungszeichen ein literaler
Befehl ist, der die Verwendung von doppelten
Anführungszeichen um Dateinamen in Dateinamens-
sätzen erlaubt.
Einige Beispiele:
FOR /F "eol=; tokens=2,3* delims=, " %i in (Datei.txt) do @echo %i %j %k
Dadurch wird jede Zeile in der Datei Datei.txt ausgewertet, Zeilen die
mit einem Semikolon beginnen werden ignoriert, für den 2. und 3. Token
jeder Zeile werden die Befehle in der FOR-Schleife ausgeführt. Trenn-
zeichen sind Kommas und/oder Leerzeichen. In der FOR-Schleife wird der
Ausdruck %i verwendet, um den 2. Token zu erhalten, %j für den 3. Token
und %k, um alle übrigen Token zu erhalten. Dateinamen, die Leerzeichen
enthalten, müssen Sie innerhalb doppelter Anführungszeichen angeben. Dazu
müssen Sie die Option "usebackq" verwenden. Andernfalls werden doppelte
Anführungszeichen zur Definition eines auszuwertenden Literals
verwendet.
Dabei ist %i explizit deklariert, während %j und %k implizit durch die
Option "tokens=" deklariert werden. Sie können bis zu 26 Token durch diese
Option angeben, vorausgesetzt, es wird dadurch nicht versucht, eine
Variable mit einem Buchstaben größer als 'z' zu deklarieren. Bedachten
Sie, dass FOR-Variablen aus nur einem Buchstaben bestehen, Groß-/Klein-
schreibung beachtet werden muss, dass sie global sind und nicht mehr als
insgesamt 52 gleichzeitig aktiv sein dürfen.
Sie können den Befehl FOR /F auch direkt mit einer Zeichenkette verwenden,
indem Sie die Zeichenkette in doppelten Anführungszeichen als Dateiensatz
zwischen den Klammern angeben. Diese Zeichenkette wird dabei als
einzelne Zeile einer Datei betrachtet und ausgewertet.
Schließlich können Sie den Befehl FOR /F auch verwenden, um die Ausgabe
eines Befehls auszuwerten. Dazu geben Sie eine Zeichenkette in einfachen
Anführungszeichen als Dateiensatz zwischen den Klammern an. Diese
Zeichenkette wird dabei als Befehlszeile betrachtet und von einer unter-
geordneten CMD.EXE ausgeführt. Die Ausgabe dieses Befehls wird dann wie
eine normale Datei ausgewertet. Das folgende Beispiel listet die Um-
gebungsvariablen im aktuellen Verzeichnis auf:
FOR /F " usebackq delims==" %i IN ((`set`) DO @echo %i
Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
Sie können jetzt folgende Syntax verwenden:
%~I - Expandiert %I und entfernt alle umschließenden
Anführungszeichen (").
%~fI - Expandiert %I zu einem vollständigen Dateinamen.
%~dI - Erzeugt nur den Laufwerkbuchstaben von %I.
%~pI - Erzeugt nur den Pfad von %I.
%~nI - Erzeugt nur den Dateinamen von %I.
%~xI - Erzeugt nur die Dateierweiterung von %I.
%~sI - Erzeugter Pfad enthält nur kurze Dateinamen.
%~aI - Erzeugt die Dateiattribute von %I.
%~tI - Erzeugt Datum und Zeit von %I.
%~zI - Erzeugt die Dateigröße von %I.
%~$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
angegebenen Verzeichnisse und expandiert die erste
gefundene Datei %I zu dem vollständigen Dateinamen.
Wenn der Name der Umgebungsvariablen nicht definiert
ist oder diese Datei bei der Suche nicht gefunden wurde,
wird dieser Parameter zu einer leeren Zeichenkette
expandiert.
Diese Parameter können auch miteinander kombiniert werden:
%~dpI - Erzeugt den Laufwerkbuchstaben und Pfad von %I.
%~nxI - Erzeugt den Dateinamen und die Dateierweiterung von %I.
%~fsI - Expandiert %I zu einem vollständigen Namen, der nur
kurze Dateinamen enthält.
%~dp$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
angegebenen Verzeichnisse nach %I und erzeugt den
Laufwerkbuchstaben und Pfad der ersten gefundenen Datei.
%~ftzaI - Expandiert %I zu einer Zeile, die der Ausgabe des DIR-
Befehls entspricht.
In den angegebenen Beispielen können %I und PATH durch andere gültige
Werte ersetzt werden. Der Ausdruck %~ wird durch einen gültigen Variablen-
namen für FOR abgeschlossen. Die Verwendung von Großbuchstaben für die Namen
von Variablen, wie z.B. %I, macht diese Ausdrücke leichter lesbar und
vermeidet Verwechslungen mit den eigentlichen Parametern.
Wichtige Informationen, Tipps zum Befehl "FOR"
Beim Verwenden des
`FOR`-Befehls in der Windows-Eingabeaufforderung gibt es einige wichtige Punkte zu beachten:
1.
Syntax in Batch-Dateien: Wenn du den
`FOR`-Befehl in einer Batch-Datei verwendest, musst du
`%` durch
`%%` ersetzen. Zum Beispiel:
`FOR %%G IN (...) DO ECHO %%G`.
2.
Verwendung von Variablen: In der Regel verwendest du Variablen (z.B.,
`%%G`) in der
`FOR`-Schleife, um Werte zu speichern. Beachte, dass die Variablen außerhalb der Schleife nicht auf die zugewiesenen Werte zugreifen können.
SET Variable=Anfangswert
FOR %%G IN (Wert1 Wert2) DO SET Variable=%%G
ECHO %Variable%
Hier wird
`%Variable%` den Wert
"Anfangswert" behalten, weil die
`SET`-Anweisung in einer separaten
`FOR`-Schleife ausgeführt wird.
3.
Leerzeichen in Pfaden oder Dateinamen: Wenn Pfade oder Dateinamen Leerzeichen enthalten, sollte der Pfad oder Dateiname in Anführungszeichen gesetzt werden, um sicherzustellen, dass sie korrekt interpretiert werden.
FOR %%G IN ("Verzeichnis mit Leerzeichen\Datei mit Leerzeichen.txt") DO ECHO %%G
4.
Optionen für die `FOR /F`-Schleife: Wenn du
`FOR` in Verbindung mit der
`/F`-Option verwendest (z.B.,
`FOR /F "tokens=*" %%G IN (Datei.txt) DO ECHO %%G`), musst du die Syntax für die
`tokens` und
`delims` Optionen sorgfältig anpassen, um die gewünschten Ergebnisse zu erhalten.
5.
Verschachtelte Schleifen: Bei verschachtelten Schleifen musst du auf die korrekte Verwendung von
`%` oder
`%%` achten, um sicherzustellen, dass die Variablen in der richtigen Schleife referenziert werden.
FOR %%G IN (1 2) DO (
ECHO Außere Schleife: %%G
FOR %%H IN (A B) DO ECHO Innere Schleife: %%H
)
6.
Ende der Dateizeilen in `FOR /F`: Wenn du
`FOR /F` zum Durchlaufen von Zeilen in einer Datei verwendest, wird standardmäßig jede Zeile bis zum ersten Leerzeichen oder Tabulator als ein Token betrachtet. Du kannst dies mit der Option
`delims` anpassen.
FOR /F "tokens=* delims=" %%G IN (Datei.txt) DO ECHO %%G
7.
Optionen für Datums- und Zeitvariablen: Wenn du die
`%DATE%`- oder
`%TIME%`-Variablen in einer
`FOR`-Schleife verwendest, solltest du auf die regionale Einstellung des Systems achten, da das Format variieren kann.
8.
Durchlaufen von Dateien mit UTF-8-Kodierung: Der
`FOR /F`-Befehl hat möglicherweise Schwierigkeiten beim Durchlaufen von Dateien mit UTF-8-Kodierung. In solchen Fällen könnte es besser sein, andere Werkzeuge wie
`FINDSTR` zu verwenden.
Es ist wichtig, die spezifischen Anforderungen deines Anwendungsfalls zu berücksichtigen und die
`FOR`-Schleife entsprechend anzupassen. Du kannst
`FOR /?` in der Eingabeaufforderung eingeben, um die vollständige Hilfe und alle verfügbaren Optionen zu sehen.