Как переименовать файл с помощью PowerShell, как обрабатывать имена файлов с помощью "["?

Я запускаю эту команду PowerShell:

Get-ChildItem .\tx\*.htm | Rename-Item -NewName {$_.Name -replace '\.htm','.tmp'}

и получить следующую ошибку, когда имя файла содержит квадратные скобки - [ и / или ] - понятно, поскольку они имеют значение в синтаксисе PowerShell.

Rename-Item: невозможно переименовать, потому что элемент в
"Microsoft.PowerShell.Core\FileSystem::C:\ Пользователи \ ххххх \ Desktop\ ТХ \
Foofoofoofoo_foo_foo_[BAR]_Foofoofoofoo_foofoofoo.htm'не существует.
В C:\users\xxxxx\desktop\foo002.ps1:59 char:39
+ Get-ChildItem .\ Tx\*. Htm | Rename-Item <<<<  -NewName { $_.Name -replace '\.htm','. Tmp' }
    + CategoryInfo: InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
    + FullyQualifiedErrorId: InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand

Все остальные файлы в пути имеют похожие имена (Phrase_With_Underscores.htm) и переименованы без происшествий. Кто-нибудь имеет опыт работы с этим и знает, как противостоять этому, чтобы я мог манипулировать этими файлами?

1 ответ

Решение

Вы можете обойти, используя move-item для переименования предметов с помощью параметра -LiteralPath,

Это известная ошибка: Connect (читайте комментарий Кита Хилла: powershell V3 исправляет эту проблему)

Другие вопросы по тегам