我需要交换某些文件的名称。这些文件位于相同的位置,因此我计划将它们移到暂存区,以避免两个名称相同的文件。我试图根据名称参数识别文件,将其移至暂存区并重命名。
我想使用类似以下内容的东西:
Get-ChildItem ".\" -Recurse | Where-Object { $_.Name -like "*XYZ*"} | Move-Item -Force -Destination "C:\new\" | Rename-Item -NewName { $_.Name -replace 'XYZ','ABC' }
文件会移动,但不会重命名。我无法通过管道move-item
传送到rename-item
吗?
我很高兴知道是否有一种更好的方法可以在不移动的情况下交换两个文件的文件名,但也想知道为什么上述方法不起作用。
谢谢!
默认情况下Move-Item
不会沿管道传递当前对象。
您可以使用-Passthru
开关来获得该功能:
Move-Item -Force -Destination "C:\new\" -Passthru
或者,您可以Rename-Item
通过将Move-item
目标文件作为文件来删除:
Get-ChildItem ".\" -Recurse |
Where-Object { $_.Name -like "*XYZ*"} |
Move-Item -Force -Destination "C:\new\$($_.Name -replace 'XYZ','ABC')"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句