如何解决重命名子文件夹时出现 PowerShell 错误
我是 PowerShell 新手。我有以下命令来重命名所有子文件夹:
Get-ChildItem -r | foreach{Rename-Item $_.FullName ($_.Name -replace "2021","2021 renamed")}
此命令正常运行,但也会返回错误消息:
Rename-Item : Source and destination path must be different.
At line:1 char:28
+ ... e | foreach{Rename-Item $_.FullName ($_.Name -replace "2021","2021 r ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\Users\abc\...def\ghi\2025:String) [Rename-Item],IOException
+ FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand
其中 ...def\ghi\2025
是最后一个子文件夹。
有人可以告诉我我的命令中的错误是什么吗?
解决方法
如果您只想重命名子文件夹,则应添加 -Directory
参数。此外,您可以直接通过管道传输到 Rename-Item
,不需要 foreach 循环。对于那些您实际上并未更改的项目,会显示错误消息(例如,名称中没有 2021,因此新名称与旧名称相同。)您可以将 erroraction 设置为静默继续。
Get-ChildItem -Directory -Recurse |
Rename-Item -NewName {$_.Name -replace "2021","2021 renamed"} -ErrorAction SilentlyContinue
或者,如果您愿意,您可以坚持使用循环,只尝试重命名那些实际具有匹配条件的名称
Get-ChildItem -r | ForEach-Object{
if($_.name -match '2021')
{
Rename-Item $_.FullName ($_.Name -replace "2021","2021 renamed")
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。