Verwendung der Stapeldatei For Loop in Windows

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