我需要交换一些文件的名称.这些文件位于同一位置,因此我计划将它们移动到临时接地,以避免两个文件具有相同的名称.我试图根据名称参数识别文件,将其移动到临时基地并重命名.
我想使用类似于以下内容的东西:
Get-ChildItem ".\" -Recurse | Where-Object { $_.Name -like "*XYZ*"} | Move-Item -Force -Destination "C:\new\" | Rename-Item -NewName { $_.Name -replace 'XYZ','ABC' }
Run Code Online (Sandbox Code Playgroud)
文件移动,但不重命名.我不能管move-item到rename-item吗?
我很高兴知道是否有更好的方法来交换两个文件的文件名而不移动,但也想知道为什么上面的工作不起作用.
谢谢!
默认情况下,Move-Item不会沿管道传递当前对象.
您可以使用该-Passthru开关来获取该功能:
Move-Item -Force -Destination "C:\new\" -Passthru
Run Code Online (Sandbox Code Playgroud)
或者,您可以Rename-Item通过将Move-item目标设为文件来减少:
Get-ChildItem ".\" -Recurse |
Where-Object { $_.Name -like "*XYZ*"} |
Move-Item -Force -Destination "C:\new\$($_.Name -replace 'XYZ','ABC')"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |