(我只是要在这里发布每条路径。这让人感觉很尴尬,但这可能会造成什么伤害,对吧?)
这是我的 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
循环
我更喜欢其中的第三种,因为它的步骤更简单、更明显……因此更容易调试。[咧嘴笑]