Ryans Antwort ist nett, weil sie ohne harten Bezug auf den Basisnamen des neuen Dateinamens funktioniert.
Ich benenne Dateien immer aus irgendeinem Grund um und habe kreative Wege gefunden, Strings mit Powershell zu bearbeiten. Hier ist eine andere Möglichkeit, dies zu tun:
gci *.jpg | Rename-Item -NewName {$_.basename -replace "$($_.basename.split(".")[-1])$","$(290-$_.basename.split(".")[-1])$($_.extension)"}
Dieser One-Liner kann erneut verwendet werden, um andere Dateien auf dieselbe Weise umzubenennen, unabhängig davon, ob es sich um JPG-, GIF- oder TXT-Dateien handelt. Voraussetzung ist nur, dass der letzte Teil des Basisnamens mit ". #" Endet.
Also, was ist hier los? Um es aufzuschlüsseln, nehmen wir an, dass $ _ derzeit ein [System.IO.FileInfo] -Objekt für die Datei "Vitrine Hinge.12.jpg" ist. Deshalb:
$ _. basename
würde [string] "Vitrine Hinge.12" entsprechen
$_.basename.split(".")
würde zu einem Array mit den folgenden Einträgen führen:
Door Hinge 12
Insofern würde sich [1] auf die "12" beziehen. Beachten Sie jedoch, dass ich stattdessen verwendet habe:
$_.basename.split(".")[-1]
Wenn ich nämlich eine Datei namens "Viterine Hinge.Chrome.12.jpg" hätte, hätte ich auf "Chrome" hingewiesen. Bei Verwendung von [-1] wird das letzte Element im Array angezeigt. Daher ist es nicht wichtig, ob meine Datei andere Punkte im Namen enthält.
OK, also jetzt an dieser Stelle, kapsle ich das in $ () und verwende es in meinem -replace-Operator. Beachten Sie, dass ich das erste Argument mit $ beende, sodass ich am Ende der Zeichenfolge einen regulären Ausdruck finden würde. Auf diese Weise wäre es nicht wichtig, wenn meine Dateien andere Nummern im Namen hätten. Beispielsweise würde "Viterine D00r Knob.0.jpg" nicht in "Viterine D290290r Knob.290.jpg" umbenannt.
Lass mich wissen, wenn etwas verpasst wurde, Prost :)