DOS Befehl - FOR

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.