Как переименовать файл с помощью 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 исправляет эту проблему)