重命名子文件夹时出现 PowerShell 错误

PowerShell error in renaming of subfolders

我是 PowerShell 新手。我有以下命令重命名所有子文件夹:

Get-ChildItem -r | foreach{Rename-Item $_.FullName ($_.Name -replace "2021", "2021 renamed")}

此命令工作正常,但也returns一条错误消息:

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\ghi25:String) [Rename-Item], IOException
    + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand

其中 ...def\ghi25 是最后一个子文件夹。

有人可以告诉我我的命令中的错误是什么吗?

如果只想重命名子文件夹,则应添加 -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")
    }
}