如果文件数量很大,Powershell Rename-Item 会重复

如果文件数量很大,Powershell Rename-Item 会重复

(我只是要在这里发布每条路径。这让人感觉很尴尬,但这可能会造成什么伤害,对吧?)

这是我的 PowerShell 命令提示符:

PS D:\Local generations\Tlungvel> ls | Rename-Item -NewName {"TlungvelSolar " + $_.Name}
Rename-Item : Could not find a part of the path.
At line:1 char:6
+ ls | Rename-Item -NewName {"TlungvelSolar " + $_.Name}
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (D:\Local genera..._02.07.2021.xls:String) [Rename-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand

Rename-Item : Could not find a part of the path.
At line:1 char:6
+ ls | Rename-Item -NewName {"TlungvelSolar " + $_.Name}
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (D:\Local genera..._23.07.2021.xls:String) [Rename-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand

... 依此类推,目录中的每个文件都是如此。

即使对于像我这样的初级用户来说,该命令也非常简单(“ls | Rename-Item -NewName {“TlungvelSolar " + $_.Name}”),如果目录中的文件数量很少,它就可以正常工作。但是,如果文件数量达到某个阈值,该过程就会无限重复,并为每个文件引发上述错误。

例如,其中一个文件名是“Power_Drawal_from_23.07.2021___24.07.2021”

如果文件数超过 22(对于此文件名),它会将其重命名为“TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar Power_Drawal_from_23.07.2021___24.07.2021”(重复次数受 Windows 最大 256 个字符文件路径限制的限制)。

现在我想将其重命名为“TlungvelSolar Power_Drawal_from_23.07.2021___24.07.2021”

同样,如果文件数量较少,它可以正常工作,并且它似乎也依赖于文件名。

答案1

你的问题是由于将物品送入管道而引起的同时改变源。[咧嘴笑] 这使得重新处理同一个项目变得非常容易 - 它看起来像代码中的不同项目。

修复方法类似于下面的解决方案之一......

  • 将所有项目放入 $Var 中并提供完整集合进入管道
  • 将调用括G-CI在括号中,以强制调用抓取所有内容一度
  • 使用foreach循环

我更喜欢其中的第三种,因为它的步骤更简单、更明显……因此更容易调试。[咧嘴笑]

相关内容