Umbenennen von Dateien und Ordnern mit PowerShell

  1. Filtern von Dateien und Ordnern in PowerShell
  2. Umbenennen von Dateien in PowerShell
Umbenennen von Dateien und Ordnern mit PowerShell

Das Umbenennen von Dateien und Ordnern gehört höchstwahrscheinlich zu den Grundfunktionen des Windows-Betriebssystems. Wir können Dateien und Ordner über die GUI umbenennen, indem wir mit der rechten Maustaste auf eine Datei klicken und Umbenennen auswählen.

Wenn mehrere Dateien umbenannt werden müssen, ist es effizienter, dies durch Automatisierung anzugehen. In diesem Artikel wird das Filtern von Dateien und Ordnern sowie das Umbenennen der Dateinamen und das Ändern der Dateierweiterung mit Windows PowerShell erläutert.

Filtern von Dateien und Ordnern in PowerShell

Der Windows PowerShell-Befehl Get-ChildItem ruft die Betriebssystemelemente in einem angegebenen Verzeichnis oder Speicherort ab. Darüber hinaus kann der im Cmdlet angegebene Speicherort eine Registrierung, ein Dateisystem oder ein Zertifikatspeicher sein.

Wir werden unsere Beispiele für diesen Artikel mehr auf Dateien und Ordner konzentrieren.

Syntax:

Get-ChildItem -Path C:\PS\Temp

Im obigen Befehl ruft das Cmdlet Get-ChildItem alle Elemente aus dem angegebenen Wert des Parameters -Path ab. Das Cmdlet Get-ChildItem zeigt bei Ausführung Dateien und Verzeichnisse mit ihren Eigenschaften Mode, LastWriteTime, Length (Dateigrösse) und Name auf der PowerShell-Konsole an.

Ausgang:

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----l        18/01/2022   8:52 pm                Microsoft
d----l        20/12/2021   3:36 pm                Cisco
-a---l        30/12/2021   3:24 pm          (151) backup_phrase.txt
-a---l        17/06/2021   3:23 am       (410049) CEF17501168.pdf
-a---l        16/05/2021   3:32 am          (677) default.txt
-a---l        21/08/2020   9:06 am         (2240) test.csv
-a---l        26/06/2021   8:25 am        (63399) banner.jpg
-a---l        09/03/2021  10:48 pm          (143) inventory.xlsx
<SNIP>

Mit dem Parameter -Filter können wir unsere Suchergebnisse mit nur einem einzigen Ausdruck einschränken. Wir können auch den Alias gci als Ersatz für den Befehl Get-ChildItem verwenden, um ein nahtloseres Schreiberlebnis zu erzielen.

Beispielcode:

gci -Filter C:\PS\Temp\* -Filter *.xlsx

Ausgang:

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---l        09/03/2021  10:48 pm          (143) inventory.xlsx
<SNIP>

Wir können die Parameter -Include verwenden, die mehrere Bedingungen akzeptieren. Daher können wir sagen, dass der Parameter -Include besser ist als der Parameter -Filter.

Der Parameter -Include erfordert jedoch, dass der Parameter -Path im Ausdruck vorhanden ist.

Beispielcode:

gci -Path C:\PS\Temp\* -File -Include CEF*.pdf, *.xlsx, *.txt

Ausgang:

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---l        17/06/2021   3:23 am       (410049) CEF17501168.pdf
-a---l        16/05/2021   3:32 am          (677) default.txt
-a---l        09/03/2021  10:48 pm          (143) inventory.xlsx
<SNIP>

Der Pfad sollte am Ende ein Platzhalter-Sternchen (*) enthalten, wenn der Switch-Parameter ‘- Include’ verwendet wird. Dieser Platzhalter gibt an, dass wir alle untergeordneten Pfadelemente mit der spezifischen Erweiterung abfragen, die im Parameter -Include definiert ist.

Umbenennen von Dateien in PowerShell

Der Windows PowerShell-Umbenennungsbefehl Rename-Item dient dazu, die Dateinamen von Betriebssystemelementen wie Dateien und Ordnern umzubenennen. Zum Beispiel ändern wir den Namen TestFile.txt in RenamedFile.txt.

Beispielcode:

Rename-Item -Path '.\TestFile.txt' -NewName 'RenamedFile.txt'
gci -Filter 'RenamedFile.txt'

Wenn wir nun einen gci-Befehl zum Filtern eines bestimmten Elements initiieren, sollte uns dies bestätigen, dass die Datei umbenannt wurde.

Ausgang:

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        12/10/2021  11:38 PM           2982 RenamedFile.txt

Das Cmdlet Rename-Item benennt nicht nur den Dateinamen einer bestimmten Datei um, sondern kann auch das Format von Dateien ändern. Das folgende Code-Snippet verwendet beispielsweise die Kombination der Befehle Get-ChildItem und Rename-Item, indem alle Dateien mit dem Format .txt gefiltert und ihr Dateiformat in .csv geändert werden.

Beispielcode:

gci *.txt | Rename-Item -NewName { $_.Name -replace '.txt', '.csv' }
gci -Filter *.csv

Ausgang:

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        12/10/2021  11:38 PM           2982 RenamedFile.csv
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn