重命名项目:无法重命名,因为 ... 处的项目不存在
Rename-item: Cannot rename because item at ... does not exist
我迷失了简单的重命名项目。需要将文件夹名称更改为“01”、“02”、“03”...尝试了所有方法,但最后我得到了这个“项目不存在”。抱歉提出愚蠢的问题,但我整天都在寻找解决方案。
PS C:\Users\admin>
$nr = 1
Dir E:"Data-test" | %{Rename-Item $_ -NewName (‘{0}’ -f $nr++)}
Rename-Item : Cannot rename because item at 'ert' does not exist.
At line:3 char:23
+ Dir E:"Data-test" | %{Rename-Item $_ -NewName (‘{0}’ -f $nr++)}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
Rename-Item : Cannot rename because item at 'ukh' does not exist.
At line:3 char:23
+ Dir E:"Data-test" | %{Rename-Item $_ -NewName (‘{0}’ -f $nr++)}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
Rename-Item : Cannot rename because item at 'yph' does not exist.
At line:3 char:23
+ Dir E:"Data-test" | %{Rename-Item $_ -NewName (‘{0}’ -f $nr++)}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
您的脚本运行良好。 (至少是第一个变体。)你不能 运行 它一次,因为你重命名了它正在使用的文件(即“数据测试”)。我刚刚在我的 E: 驱动器和 运行 你的脚本上创建了一个数据测试文件,一次没有问题。然后,在第二次尝试时,它无法工作,因为它是第一次工作。
如果您正在使用名为“Data-Test”的目录的内容,则需要在 $_ 后附加 .FullName。 (例如:重命名项目 $_.FullName -NewName ...)
见图:
如果它仍然不起作用,请确保您的 E: 驱动器的 CWD 中有一个名为“Data-Test”的 file/folder。在该位置放置一个反斜杠将 gua运行tee 您正在根目录中工作。 (例如:E:\Data-Test)
给出了要害指针:
问题是 Windows PowerShell 根据文件name 而不是 full path,需要使用 $_.FullName
而不仅仅是 $_
; 问题已在 PowerShell [Core] v6.1+ 中得到修复 - 请参阅 了解详细信息。
但是,在您的情况下,通过使用 将 Get-ChildItem
输出 直接 输送到 Rename-Item
,可以完全避免该问题],这也加快了操作速度:
[ref] $nr = 1
Get-ChildItem E:Data-test | Rename-Item -NewName { '{0}' -f $nr.Value++ } -WhatIf
注意:上面命令中的-WhatIf
common parameter预览操作。一旦您确定该操作将执行您想要的操作,请删除 -WhatIf
。
注意 [ref]
variable, which enables incrementing the sequence number across input objects from inside the delay-bind script block. This is necessary, because delay-bind script blocks run in a child scope of the caller's scope - unlike the script blocks passed to ForEach-Object
(%
) and Where-Object
(?
) 的使用。
有关此差异的讨论,请参阅 GitHub issue #7157。
我迷失了简单的重命名项目。需要将文件夹名称更改为“01”、“02”、“03”...尝试了所有方法,但最后我得到了这个“项目不存在”。抱歉提出愚蠢的问题,但我整天都在寻找解决方案。
PS C:\Users\admin>
$nr = 1
Dir E:"Data-test" | %{Rename-Item $_ -NewName (‘{0}’ -f $nr++)}
Rename-Item : Cannot rename because item at 'ert' does not exist.
At line:3 char:23
+ Dir E:"Data-test" | %{Rename-Item $_ -NewName (‘{0}’ -f $nr++)}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
Rename-Item : Cannot rename because item at 'ukh' does not exist.
At line:3 char:23
+ Dir E:"Data-test" | %{Rename-Item $_ -NewName (‘{0}’ -f $nr++)}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
Rename-Item : Cannot rename because item at 'yph' does not exist.
At line:3 char:23
+ Dir E:"Data-test" | %{Rename-Item $_ -NewName (‘{0}’ -f $nr++)}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
您的脚本运行良好。 (至少是第一个变体。)你不能 运行 它一次,因为你重命名了它正在使用的文件(即“数据测试”)。我刚刚在我的 E: 驱动器和 运行 你的脚本上创建了一个数据测试文件,一次没有问题。然后,在第二次尝试时,它无法工作,因为它是第一次工作。
如果您正在使用名为“Data-Test”的目录的内容,则需要在 $_ 后附加 .FullName。 (例如:重命名项目 $_.FullName -NewName ...)
见图:
如果它仍然不起作用,请确保您的 E: 驱动器的 CWD 中有一个名为“Data-Test”的 file/folder。在该位置放置一个反斜杠将 gua运行tee 您正在根目录中工作。 (例如:E:\Data-Test)
问题是 Windows PowerShell 根据文件name 而不是 full path,需要使用 $_.FullName
而不仅仅是 $_
; 问题已在 PowerShell [Core] v6.1+ 中得到修复 - 请参阅
但是,在您的情况下,通过使用 Get-ChildItem
输出 直接 输送到 Rename-Item
,可以完全避免该问题],这也加快了操作速度:
[ref] $nr = 1
Get-ChildItem E:Data-test | Rename-Item -NewName { '{0}' -f $nr.Value++ } -WhatIf
注意:上面命令中的-WhatIf
common parameter预览操作。一旦您确定该操作将执行您想要的操作,请删除 -WhatIf
。
注意 [ref]
variable, which enables incrementing the sequence number across input objects from inside the delay-bind script block. This is necessary, because delay-bind script blocks run in a child scope of the caller's scope - unlike the script blocks passed to ForEach-Object
(%
) and Where-Object
(?
) 的使用。
有关此差异的讨论,请参阅 GitHub issue #7157。