Wie kann ich in PowerShell eine Schleife über eine Liste von Dateien in einem Ordner erstellen?

Melden
  1. Einführung
  2. Dateien in einem Ordner auslesen
  3. Schleife über die Dateien erstellen
  4. Alternative: Inline-Schleife ohne Variable
  5. Additionale Tipps
  6. Fazit

Einführung

Wenn Sie in PowerShell eine Schleife erstellen möchten, die über eine Liste von Dateien in einem bestimmten Ordner iteriert, können Sie dies sehr einfach erreichen. PowerShell bietet dafür verschiedene Möglichkeiten, insbesondere mithilfe von Get-ChildItem und einer foreach-Schleife.

Dateien in einem Ordner auslesen

Um alle Dateien in einem bestimmten Verzeichnis zu erhalten, verwenden Sie den Befehl Get-ChildItem mit dem Pfad zum Ordner. Standardmäßig liefert dieser Befehl sowohl Dateien als auch Unterordner zurück, Sie können allerdings mit dem Parameter -File explizit nur Dateien auswählen.

Zum Beispiel:

Get-ChildItem -Path "C:\MeinOrdner" -File

Dieser Befehl listet alle Dateien im Ordner C:\MeinOrdner auf.

Schleife über die Dateien erstellen

Um nun über diese Dateien zu iterieren, können Sie eine foreach-Schleife benutzen, um jede Datei einzeln zu bearbeiten. Ein typisches Konstrukt sieht so aus:

$dateien = Get-ChildItem -Path "C:\MeinOrdner" -Fileforeach ($datei in $dateien) { # Hier können Sie mit $datei arbeiten Write-Host "Dateiname: $($datei.Name)"}

Innerhalb der Schleife haben Sie Zugriff auf das aktuelle Dateiobjekt $datei. Dieses Objekt enthält viele nützliche Eigenschaften, wie den Dateinamen (Name), den vollständigen Pfad (FullName), die Dateigröße (Length) und mehr.

Alternative: Inline-Schleife ohne Variable

Wenn Sie die Liste der Dateien nicht extra in einer Variable speichern möchten, können Sie auch direkt in der Schleife über die Ausgabe von Get-ChildItem iterieren:

foreach ($datei in Get-ChildItem -Path "C:\MeinOrdner" -File) { Write-Host "Dateipfad: $($datei.FullName)"}

Additionale Tipps

Falls Sie nur bestimmte Dateitypen verarbeiten möchten, können Sie den Parameter -Filter verwenden, um beispielsweise nur .txt-Dateien auszuwählen:

foreach ($datei in Get-ChildItem -Path "C:\MeinOrdner" -File -Filter "*.txt") { Write-Host "Textdatei: $($datei.Name)"}

Eine andere Möglichkeit, tief in Unterordnern alle Dateien zu finden, ist die Verwendung von -Recurse:

foreach ($datei in Get-ChildItem -Path "C:\MeinOrdner" -File -Recurse) { Write-Host "Gefundene Datei: $($datei.FullName)"}

Fazit

Mit der Kombination aus Get-ChildItem und der foreach-Schleife können Sie ganz einfach durch eine Liste von Dateien iterieren und diese in PowerShell verarbeiten. Die Methode ist flexibel und lässt sich durch verschiedene Parameter an Ihre Bedürfnisse anpassen.

0
0 Kommentare