Verwendung der Stapeldatei For Loop in Windows

Eine Batch-Datei ist eine einfache Textdatei, die eine Reihe von Befehlen enthält, die nacheinander von der Eingabeaufforderung in Windows ausgeführt werden. Stapeldateien können verwendet werden, um sich wiederholende Aufgaben zu automatisieren, Programme auszuführen oder Datei- und Ordneroperationen durchzuführen.

Ein wichtiges Merkmal von Batchdateien ist die Möglichkeit, Schleifen zu erstellen, d. h. bestimmte Befehle für jedes Element in einem Datensatz zu wiederholen. Durch die Verwendung von Schleifen können Sie beim Schreiben und Ausführen von Batch-Dateien Zeit und Mühe sparen.

In diesem Artikel wird die Verwendung von Stapelverarbeitungsdateien mit for-Schleifen in Windows erklärt, einschließlich Syntax, Beispiele und nützliche Tipps. Wir werden auch einige Varianten der for-Schleife behandeln, wie for /f, for /r und for /d, die zur Verarbeitung von Textdateien, Unterordnern oder Verzeichnissen verwendet werden können. Nach der Lektüre dieses Artikels werden Sie in der Lage sein, mit Hilfe von for-Schleifen effizientere und flexiblere Batch-Dateien zu erstellen.

coding

Was ist Batch File For Loop?

Eine Batch-For-Loop-Datei ist eine Kontrollstruktur, die es Ihnen ermöglicht, einen bestimmten Befehl für jedes Element in einem Datensatz auszuführen. Der Datensatz kann eine Liste von Werten, ein Zahlenbereich oder das Ergebnis eines anderen Befehls sein.

Die Befehle, die von der for-Schleife ausgeführt werden, werden als Befehlsblöcke bezeichnet und können aus einer oder mehreren Zeilen bestehen. Bei jeder Iteration der Schleife wird der aktuelle Wert des Elements in einer Variablen gespeichert, die im Befehlsblock verwendet werden kann.

Die grundlegende Syntax einer For-Loop-Batch-Datei lautet wie folgt:

FOR %%parameter IN (set) DO command

Wo:

  • Der %%Parameter ist eine Variable, die den aktuellen Wert des Elements speichert. Dieser Variable müssen zwei Prozentzeichen (%%) vorangestellt werden, wenn sie in einer Batch-Datei verwendet wird, oder ein Prozentzeichen (%), wenn sie direkt an der Eingabeaufforderung verwendet wird.
  • (Ein Set ist eine Sammlung von Daten, die von einer Schleife verarbeitet werden sollen. Diese Menge kann eine Liste von Werten sein, die durch Leerzeichen, Kommas oder Semikolons getrennt sind, oder ein Zahlenbereich, der mit dem Format  (start,step,end) angegeben wird. Diese Menge kann auch das Ergebnis eines anderen, in einfache Anführungszeichen (‚) eingeschlossenen Befehls sein, z. B.  ‚dir /b‘  oder  ‚type file.txt‘.
  • command ist der Befehl, der für jedes Element in der Menge ausgeführt werden soll. Dieser Befehl kann ein interner oder externer Befehl, eine Batch-Datei oder eine Befehlsliste sein. Die Variable %%parameter% kann in diesem Befehl verwendet werden, um auf den aktuellen Wert des Elements zu verweisen. Wenn der Befehl aus mehr als einer Zeile besteht, muss er von Klammern (( und )) umgeben sein.

Beispiel:

FOR %%A IN (1 2 3) DO ECHO %%A

Mit dem obigen Befehl werden die Zahlen 1, 2 und 3 nacheinander auf dem Bildschirm angezeigt.

FOR %%B IN (1,2,10) DO ECHO %%B

Mit dem obigen Befehl werden die Zahlen 1, 3, 5, 7 und 9 nacheinander auf dem Bildschirm angezeigt. Das liegt daran, dass der Zahlenbereich  (1,2,10)  bedeutet, dass er bei 1 beginnt und sich in jedem Schritt um 2 erhöht, bis er den Höchstwert 10 erreicht.

FOR %%C IN ('dir /b *.txt') DO TYPE %%C

Mit dem obigen Befehl wird der Inhalt aller Textdateien im aktuellen Verzeichnis angezeigt.

Wie verwendet man Batch File For Loop zur Verarbeitung von Dateien und Ordnern?

Eine der häufigsten Verwendungen von Stapeldateien für Schleifen ist die Verarbeitung von Dateien und Ordnern in großen Mengen. Zum Beispiel können Sie eine Reihe von Dateien oder Ordnern nach einem bestimmten Muster umbenennen, löschen oder verschieben wollen. Dazu können Sie einige der zusätzlichen Optionen verwenden, die für for-Schleifen zur Verfügung stehen, wie z. B.:

  • /F um Textdateien oder Ergebnisse anderer Befehle zu verarbeiten.
  • /R um Unterordner rekursiv zu verarbeiten.
  • /D um nur Verzeichnisse zu verarbeiten.

Hier ist die Syntax der for loop Batch-Datei mit diesen zusätzlichen Optionen:

FOR /F ["options"] %%parameter IN (set) DO command

Wo:

  • [„options“] sind zusätzliche Optionen, die verwendet werden können, um zu steuern, wie die for-Schleife Textdateien oder Befehlsergebnisse verarbeitet. Einige häufig verwendete Optionen sind:
FOR /R [[drive:]path] %%parameter IN (set) DO command

Wo:

  • [[Laufwerk:]pfad] ist das Startverzeichnis, das von der Schleife verarbeitet werden soll. Wenn nicht angegeben, wird das aktuelle Verzeichnis verwendet.
  • (set) ist die Menge der Dateien, die von der Schleife verarbeitet werden sollen. Diese Menge muss ein Muster sein, das auf eine Datei passt (file globbing), z. B.  *.txt  oder  ?.bat. Wenn diese Menge leer ist, werden alle Dateien verarbeitet.
FOR /D %%parameter IN (set) DO command

Wo:

  • (set) ist die Menge der Verzeichnisse, die von der Schleife verarbeitet werden sollen. Diese Menge muss ein Muster sein, das auf eine Datei zutrifft (file globbing), wie  * oder ? Wenn diese Menge leer ist, werden alle Verzeichnisse verarbeitet.

Beispiel:

FOR /F "skip=1 delims=," %%A IN (data.csv) DO ECHO %%A

Der obige Befehl überspringt die erste Zeile der Datei data.csv, die normalerweise die Spaltenüberschriften enthält, und zeigt den ersten Spaltenwert jeder nachfolgenden Zeile an, getrennt durch Kommata.

FOR /F "tokens=1,2* usebackq" %%A IN ("file name.txt") DO ECHO %%A %%B %%C

Der obige Befehl verarbeitet eine Textdatei, deren Name Leerzeichen enthält, und zeigt die ersten, zweiten und restlichen Spaltenwerte jeder Zeile an, getrennt durch Leerzeichen oder Tabulatoren.

FOR /R C:\Users\ %%D IN (*.jpg) DO COPY %%D D:\Backup\

Der obige Befehl sucht im Verzeichnis C:\Users\ und seinen Unterverzeichnissen nach allen Dateien mit der Erweiterung .jpg und kopiert sie in das Verzeichnis D:\Backup.

FOR /D %%E IN (*) DO RMDIR /S /Q %%E

Der obige Befehl löscht alle Verzeichnisse und deren Inhalte im aktuellen Verzeichnis.

Wie verwendet man Batch File For Loop für den Zugriff auf Datei- und Ordnerinformationen?

Zusätzlich zur Verarbeitung von Dateien und Ordnern mit der Stapeldatei für die Schleife können Sie auch auf Informationen über sie zugreifen, wie Name, Erweiterung, Größe, Änderungsdatum, Attribute und Pfad.

Zu diesem Zweck können Sie Pfadmodifikatoren für Schleifenvariablen verwenden. Ein Pfadmodifikator ist ein spezielles Zeichen, das nach dem Prozentzeichen (%) in einer Schleifenvariablen hinzugefügt werden kann, um den Wert dieser Variablen zu ändern.

Hier sind einige häufig verwendete Pfadänderungen:

  • %~fparameter um den vollständigen Pfad einer Datei oder eines Ordners anzuzeigen.
  • %~nparameter`, um Datei- oder Ordnernamen ohne Erweiterungen anzuzeigen.
  • %~xparameter um Datei- oder Ordnererweiterungen anzuzeigen.
  • %~sparameter um den kurzen Pfad einer Datei oder eines Ordners anzuzeigen, was nützlich ist, wenn der Pfad Leerzeichen enthält.
  • %~zparameter um die Datei- oder Ordnergröße in Bytes anzuzeigen.
  • %~tparameter um das Datum und die Uhrzeit der Datei- oder Ordneränderung anzuzeigen.
  • %~aparameter um Datei- oder Ordnerattribute anzuzeigen, wie z. B. R (schreibgeschützt), H (versteckt), S (System), usw.

Beispiel:

FOR %%F IN (*.txt) DO ECHO %%F %%~nF %%~xF %%~sF %%~zF %%~tF %%~aF

Der obige Befehl zeigt Informationen über alle Textdateien im aktuellen Verzeichnis an, wie Name, Erweiterung, Kurzpfad, Größe, Änderungsdatum und Attribute.

Wie verwendet man Batch File For Loop, um relative Pfade zu erstellen?

Eine der Herausforderungen bei der Verwendung einer Stapeldatei für eine Schleife ist die Erstellung eines relativen Pfads für die von der Schleife verarbeitete Datei oder den Ordner. Ein relativer Pfad ist ein Pfad, der nicht den ursprünglichen Laufwerks- oder Verzeichnisnamen enthält, sondern nur einen Teil eines anderen Pfads als das aktuelle Verzeichnis.

Wenn das aktuelle Verzeichnis beispielsweise C:\Users\Alice\Documents ist, dann ist der relative Pfad der Datei C:\Users\Alice\Pictures\image.jpg …\Pictures\image.jpg.Wenn das aktuelle Verzeichnis beispielsweise C:\Users\Alice\Documents ist, dann ist der relative Pfad der Datei C:\Users\Alice\Pictures\image.jpg …\Pictures\image.jpg.

Das Erstellen relativer Pfade kann nützlich sein, wenn Sie Dateien oder Ordner an einen anderen Ort verschieben, kopieren oder umbenennen möchten, dabei aber die ursprüngliche Verzeichnisstruktur beibehalten wollen. Sie könnten zum Beispiel alle Textdateien aus dem Verzeichnis C:\Users\Alice\Documents und seinen Unterverzeichnissen in das Verzeichnis D:\Backup verschieben, die Unterverzeichnisse aber beibehalten.

Um relative Pfade mit Batch-for-Loop-Dateien zu erstellen, können Sie einige der folgenden Techniken anwenden:

  • Verwendet die Umgebungsvariable „CD“, um das aktuelle Verzeichnis zu erhalten, und entfernt sie aus dem vollständigen Pfad der Datei oder des Ordners mit dem Befehl „SET.
  • Verwenden Sie die Option /V:ON um die verzögerte Variablenexpansion zu aktivieren, und verwenden Sie ein Ausrufezeichen (!) als Variablentrennzeichen anstelle eines Prozentzeichens (%). Dies ist nützlich, wenn Sie den Wert einer Variablen in einer Schleife ändern wollen.
  • Verwendet die Befehle „PUSHD“ und „POPD“, um in der Schleife das aktuelle Verzeichnis zu wechseln, und verwendet einen Punkt (.), um auf das aktuelle Verzeichnis zu verweisen.

Beispiel:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /R C:\Users\Alice\Documents %%G IN (*.txt) DO (
  SET "source=%%G"
  SET "destination=!source:%CD%=!"
  ECHO !destination!
)
ENDLOCAL

Der obige Befehl sucht nach allen Textdateien im Verzeichnis C:\Users\Alice\Documents und seinen Unterverzeichnissen und zeigt ihre relativen Pfade vom aktuellen Verzeichnis aus an. Wenn das aktuelle Verzeichnis beispielsweise C:\Benutzer\Alice\Dokumente ist, lautet der relative Pfad der Datei C:\Benutzer\Alice\Dokumente\Ordner1\Datei1.txt: Ordner1\Datei1.txt.

@ECHO OFF
FOR /R C:\Users\Alice\Documents %%H IN (*.txt) DO (
  PUSHD "%%~dpH"
  SET "source=%%H"
  SET "destination=%CD%\%%~nxH"
  ECHO %destination%
  POPD
)

Der obige Befehl sucht nach allen Textdateien im Verzeichnis C:\Benutzer\Alice\Dokumente und seinen Unterverzeichnissen und zeigt deren vollständigen Pfad unter Verwendung des aktuellen Verzeichnisses als Präfix an. Wenn das aktuelle Verzeichnis beispielsweise D:\Backup ist, lautet der vollständige Pfad der Datei C:\Benutzer\Alice\Dokumente\Folder1\File1.txt D:\Backup\Folder1\File1.txt.

Schlussfolgerung

Die for-Schleife in Batchdateien ist eine sehr nützliche Funktion zur Erstellung effizienter und flexibler Batchdateien. Mit einer for-Schleife können Sie einen bestimmten Befehl für jedes Element in einem Datensatz wiederholen, z. B. eine Liste von Werten, einen Zahlenbereich oder das Ergebnis eines anderen Befehls.

Sie können auch einige der zusätzlichen Optionen verwenden, die für for-Schleifen zur Verfügung stehen, z. B. /F, /R und /D, um Textdateien, Unterordner oder Verzeichnisse zu verarbeiten. Darüber hinaus können Sie auch auf Informationen über die von der Schleife verarbeiteten Dateien und Ordner zugreifen, z. B. Name, Erweiterung, Größe, Änderungsdatum, Attribute und Pfad, indem Sie Pfadänderungen an Schleifenvariablen verwenden.

Schließlich können Sie auch einen relativen Pfad der von der Schleife verarbeiteten Dateien und Ordner erstellen, indem Sie verschiedene Techniken anwenden, z. B. das aktuelle Verzeichnis aus dem Gesamtpfad entfernen, eine verzögerte Variablenexpansion aktivieren oder das aktuelle Verzeichnis während der Schleife ändern.

Wir hoffen, dass dieser Artikel für diejenigen von Ihnen hilfreich ist, die mehr über Batch-Dateien für Schleifen in Windows erfahren möchten. Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte unten einen Kommentar. Vielen Dank für die Lektüre.

Neueste Artikel