Von Holger Voges auf Mittwoch, 27. Juni 2018
Kategorie: Tipp

Mehrfach-Umbenennen mit Powershell, Rename-Item und regulären Ausdrücken

Eine Datei umzubenennen ist mit Powershell mit Hilfe des Cmdlets Rename-Item relativ einfach möglich. Sie müssen nur den Namen der Datei und den neuen Namen angeben:

Rename-Item -Path C:\temp\Test.txt -NewName Produktion.txt

Es gibt aber auch die Möglichkeit, mehrere Dateien in einem Rutsch umzubenennen. Hierfür können Sie die umzubennenden Dateien per Pipeline an Rename-Item weiterleiten und neuen Namen über einen Skriptblock definieren:

Get-ChildItem -Path C:\Skripte\*.ps1 | Rename-Item -NewName { $_.basename + ".txt"  }

In diesem einfachen Beispiel werden alle Dateien mit der Endung .ps1 im Ordner c:\Skripte in .txt umbenannt - $_ ist ein Platzhalter für die einzelnen Dateien, .basename beinhaltet den Dateinamen ohne Dateiendung.

Rename-Item kann aber auch mit regulären Ausdrücken umgehen. Das kann hilfreich sein, um nur Dateien umzubennen, die einem bestimmten Muster entsprechen. Verwenden Sie dazu im Skriptblock den Operator -replace, um den neuen Namen anzugeben. Möchten Sie Beipsielsweise alle führenden Zahlen aus einem Dateinamen entfernen, verwenden Sie folgenden Code:

Get-ChildItem -path C:\downloads\ -File | Rename-Item -NewName { $_.name -replace ^'\d{3,}',''  }

$_.name enthält hier den vollständigen Dateinamen. Immer, wenn mindestens drei Zahlen (\d steht für genau eine Zahl, {3,} ist ein Quantifizierer und gibt das Minimale und Maximale Auftreten der Zahl an) am Anfang einer Zeile (^ markiert den Zeilenanfang) gefunden werden, wird das Suchmuster durch den Wert hinter dem Komma ersetzt, in diesem Fall einfach ein Leerstring. Mehr zum Replace finden Sie in der Powershell-Hilfe:

get-help about_comparison_operators -ShowWindow

weiterführende Quellen:
https://www.regular-expressions.info/

Verwandte Beiträge

Kommentare hinterlassen