1

я скачал с моего ftp-сервера дерево каталогов с использованием wget и принудительного кодирования ascii, так что теперь у меня есть много папок и имен файлов, например, "foo% C3% BC" (некоторые файлы / папки уже имеют правильные имена, потому что они только были персонажи ascii).

Сейчас я пытаюсь преобразовать их обратно в utf-8 с помощью powershell, я попытался написать следующую строку для достижения этой цели

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

но это не работает и дает мне следующую ошибку

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

снова и снова (полагаю, один раз для каждого найденного файла).

Команда работает до канала после "select BaseName", поэтому проблема в переименовании.

У кого-нибудь есть идеи, как заставить это работать?

0