[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
  ---------------------------------------------------------------------------
  FOR
  ---------------------------------------------------------------------------

  Zweck:      Wiederholungsschleifen f.r Befehle definieren.

  Format:     FOR [%]%Var IN (Menge) DO Befehl [[%]%Var]

  Einsatz:    Wenn ein bestimmter Befehl mehrmals hintereinander aufgerufen
              werden soll und sich hierbei immer nur 1 Parameter, bzw. eine
              Variable (wie z.B. ein Dateiname) .ndert kann die Wiederholung
              des Befehls mit dem Schleifen-Befehl FOR geschehen.
              [%]%Var bezeichnet hierbei eine Laufvariable, welche aus einem
              beliebigen ASCII-Zeichen ausgenommen der Zeichen % < > und |
              (ASCII 37 60 62 und 124) besteht.
              Dieser Variablen ist hierbei immer das Prozentzeichen % voran-
              zustellen, wobei innerhalb von Batch-Programmen ein zweites
              Prozentzeichen mit anzugeben ist.
              Nach dem Schl.sselwort IN folgt in einer Klammer eine Menge von
              Elementen, die von der Variablen in aufeinanderfolgenden
              Schleifen aufgenommen werden und hierdurch die Anzahl der zu
              durchlaufenden Schleifen bestimmen. Als Elemente sind m.glich:

                1. Durch Leerzeichen getrennte Zeichenfolgen, wie z.B. Buch-
                   staben, Dateinamen, Worten oder Ziffern.
                2. Durch Leerzeichen getrennte Stapelprogramm-Variablen wie
                   z.B. %1 %2 %3 etc.
                3. Durch Wildcards definierte und durch Leerzeichen ge-
                   trennte Dateigruppen, wie z.B.
                   A*.TXT f.r alle Textdateien, welche mit A beginnen.

              Hierbei k.nnen auch alle 3 M.glichkeiten auf einmal benutzt
              werden. Z.B. (Datei.txt %2 *.doc)
              Nach dem Schl.sselwort DO kann dann ein Befehl folgen, der
              die Schleifenvariable als Parameter nutzen kann.
              Ineinander verschachtelte Schleifen sind nicht m.glich; durch
              den Aufruf einer weiteren Batch-Datei mit dem Befehl CALL
              innerhalb einer FOR-Schleife ist jedoch eine indirekt ver-
              schachtelte Schleife m.glich.

  Beispiel:   FOR %%X IN (*.DOC READ*.*)DO IF EXIST %%X TYPE %%X
                Alle in der Klammer bezeichneten Dateien werden gelistet.
              FOR %%X IN (*.TMP *.BAK *.SIK) DO DEL %%X
                Alle in der Klammer bezeichneten Dateien werden gel.scht.
              FOR %%A IN (JA ja Ja jA) DO IF %%A==%1 goto ja
                .berpr.ft m.gliche Eingaben und springt gegebenenfalls zu
                dem Sprung-Label :ja.
              FOR %%P IN (masm link exe2bin) DO %%P %1
                Bei Aufruf mit einer Datei als Parameter wird diese Datei
                erst assembliert, dann gelinkt und zu einem fertigen Programm
                mit der Erweiterung .COM umgewandelt.
              FOR %%p IN (1 2 3 4 5 6 7 8 9) DO ECHO.
                Es werden 9 Leerzeilen ausgegeben. In dieser Form ist es
                schneller als 9 einzelne Zeilen mit ECHO., da COMMAND nur
                eine Zeile interpretieren mu. und nicht neun.
              FOR %Z IN (*.BAK) DO REN %Z*.TXT
                Alle Dateien mit der Erweiterung .BAK werden in eine Datei
                mit der Erweiterung .TXT umbenannt.

              Das letzte Beispiel demonstriert die Verschachtelung von zwei
              Schleifen mit dem Befehl FOR:
              Hierzu wird eine zweite Batchdatei ben.tigt, die hier
              second.bat hei.en soll:
                @ECHO OFF
                FOR %%2 IN (0 1 2 3 4 5 6 7 8 9) DO ECHO %1%%2
              In Verbindung mit einer Batchdatei:
                @ECHO OFF
                FOR %%V IN (0 1 2 3 4 5 6 7 8 9) DO CALL SECOND %%V
              werden in dieser verschachtelten Schleife alle Zahlen von
              0 bis 99 ausgegeben.

  Hinweise:   Wird in einer Befehls-Sequenz mit FOR eine Umleitung (> oder
              <) oder ein Pipe (|) angegeben, so werden zun.chst alle
              Befehle zuvor abgearbeitet:
                FOR %%D IN (C:\UTIL C:\TEXT) DO DIR %%D|SORT
              sortiert nicht (!) beide Verzeichnisse einzeln, sondern beide
              zusammen. Einzelsortierung ist dennoch m.glich:
                FOR %%D IN (C:\UTIL C:\TEXT) DO CALL Dir-Sort.BAT %%D
                Dir-Sort.Bat:
                  @ECHO OFF
                  DIR %1|SORT


See Also: call Stapel-Dateien Wildcards
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson