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 erstellt (1,1,5) die Folge 1 2 3 4 5 und
(5,-1,1) erstellt die Folge (5 4 3 2 1).
FOR /F ["Optionen"] %Variable IN (Dateiensatz) DO Befehl [Parameter]
FOR /F ["Optionen"] %Variable IN ("Zeichenfolge") 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 ("Zeichenfolge") 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 Zeichenfolgen 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. Dies ist eine
Zeichenfolge in Anführungszeichen, welche mindestens ein Schlüssel-
wort 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 erstellt
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 Zeichenfolge in umgekehrten Anführungs-
zeichen als Befehl ausgeführt wird und eine
Zeichenfolge in Anführungszeichen ein literaler
Befehl ist, der die Verwendung von doppelten
Anführungszeichen um Dateinamen in Dateien-
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 ausge-
führt. Trennzeichen 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 ver-
wendet.
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 da-
durch nicht versucht, eine Variable mit einem Buchstaben größer als
"z" zu deklarieren. Bedachten Sie, dass FOR-Variablen aus nur
einem Buchstaben bestehen, Groß-/Kleinschreibung beachtet wer-
den 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 Zeichenfolge
verwenden, indem Sie die Zeichenfolge in doppelten Anführungszei-
chen als Dateiensatz zwischen den Klammern angeben. Diese Zei-
chenfolge 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 Zei-
chenfolge in einfachen Anführungszeichen als Dateiensatz zwischen
den Klammern an. Diese Zeichenfolge wird dabei als Befehlszeile
betrachtet und von einer untergeordneten "CMD.EXE" ausgeführt.
Die Ausgabe dieses Befehls wird dann wie eine normale Datei ausge-
wertet. Das folgende Beispiel listet die Umgebungsvariablen 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 – erstellt nur den Laufwerkbuchstaben von %I.
%~pI – erstellt nur den Pfad von %I.
%~nI – erstellt nur den Dateinamen von %I.
%~xI – erstellt nur die Dateierweiterung von %I.
%~sI – erstellter Pfad enthält nur kurze Dateinamen.
%~aI – erstellt die Dateiattribute von %I.
%~tI – erstellt Datum und Zeit von %I.
%~zI – erstellt 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 Zeichenfolge
expandiert.
Diese Parameter können auch miteinander kombiniert werden:
%~dpI – erstellt den Laufwerkbuchstaben und Pfad von %I.
%~nxI – erstellt 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 erstellt 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.
Hinterlasse einen Kommentar
Du musst angemeldet sein, um einen Kommentar schreiben zu können.