Rekursiver Dateinamen von PowerShell gelesen und umbenannt

547
John Smith

Ich habe von meinem FTP-Server einen Verzeichnisbaum mit Wget und erzwungener ASCII-Kodierung heruntergeladen. Jetzt habe ich eine Menge Ordner- und Dateinamen wie "foo% C3% BC" (einige Dateien / Ordner haben bereits korrekte Namen, da sie nur die richtigen sind.) hatte ASCII-Zeichen).

Ich versuche jetzt, sie mit Powershell zurück in utf-8 zu konvertieren. 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} 

aber das funktioniert nicht und gibt mir den folgenden Fehler

Rename-Item : Cannot rename because item at '@' 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 vermute einmal für jede gefundene Datei).

Der Befehl funktioniert bis auf die Pipe nach "select BaseName", so dass das Problem im Umbenennungsteil liegt.

Hat jemand eine Idee, wie es funktioniert?

1
Meine Vermutung ist, dass der Fehler ausgelöst wird, weil Sie versuchen, nur auf Basis des Basisnamens umzubenennen, der den Pfad nicht enthält. Ƭᴇcʜιᴇ007 vor 7 Jahren 0
@ Ƭᴇcʜιᴇ007 Ich dachte, mit dem Parameter -NewName musste ich den Pfad der Datei nicht haben (ich bin mir nicht mal wirklich sicher, wie ich es bekommen kann). Haben Sie Vorschläge, wie ich versuchen könnte, das Problem zu beheben? John Smith vor 7 Jahren 0

0 Antworten auf die Frage