Rekursiver Powershell-Dateiname lesen und umbenennen


1

Ich habe von meinem FTP-Server einen Verzeichnisbaum heruntergeladen, der Wget verwendet und ASCII-Codierung erzwingt. Daher habe ich jetzt eine Menge Ordner- und Dateinamen wie "foo% C3% BC" (einige der Dateien / Ordner haben bereits korrekte Namen, weil nur sie hatte ASCII-Zeichen).

Ich versuche jetzt, sie mit Powershell wieder in utf-8 umzuwandeln. Ich habe versucht, die folgende Zeile zu schreiben, um dies zu erreichen

Get-ChildItem C:\Users\Administrator\Desktop\folder -Recurse | select BaseName | Rename-Item -NewName {[System.Web.HttpUtility]::UrlDecode{BaseName}}

das funktioniert aber nicht und gibt mir folgenden fehler

Rename-Item : Cannot rename because item at '@{BaseName=filename}' does not exist.
At line:1 char:88
+ ... ect BaseName | Rename-Item -NewName {[System.Web.HttpUtility]::UrlDecode{BaseNam ...
+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand

immer und immer wieder (ich nehme an, einmal für jede gefundene Datei).

Der Befehl funktioniert nur bis zur Pipe nach "select BaseName", sodass das Problem im Umbenennungsteil liegt.

Hat jemand eine Idee, wie es funktioniert?


Ich vermute, der Fehler wird ausgelöst, weil Sie versuchen, den Namen nur auf der Grundlage des Basisnamens umzubenennen, der den Pfad nicht enthält.
ƬᴇcƬᴇιʜ007

@ ƬᴇcƬᴇιᴇ007 Ich dachte, dass ich mit dem -NewName-Parameter nicht den Pfad der Datei haben musste (ich bin mir nicht einmal wirklich sicher, wie ich es bekommen kann). Haben Sie Vorschläge, wie ich versuchen könnte, dies zu beheben?
John Smith
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.