重命名子文件夹时出现 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")
}
}
我是 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")
}
}