如果您的文件名如“委员会会议记录[2010年10月] - hq.doc”,您如何让Powershell替换方括号?以下不起作用:
ls -filter *`[*`]* | foreach -Process { Rename-Item $_ -NewName ($_.Name -replace '\[', '\(') | Rename-Item $_ -NewName ($_.Name -replace '\]', '\)')}
我收到错误:
Rename-Item : Cannot rename because item at 'Committee minutes [October 2010] - hq.doc' does not exist.
At line:1 char:53
+ ls -filter *`[*`]* | foreach -Process { Rename-Item <<<< $_ -NewName ($_.Name -replace '\['
]', '\)')}
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
答案 0 :(得分:9)
不幸的是,这是PowerShell的已知错误/限制。一个合适且实际上并不错的解决方法是使用Move-Item
来重命名项目:它具有-LiteralPath
中缺少的Rename-Item
参数。
查看报告的问题:
https://connect.microsoft.com/PowerShell/feedback/details/553052/rename-item-literalpath