首页 > 解决方案 > 如何使用 Powershell 重命名

问题描述

如何使用PowerShell重命名Windows中的一堆文件。文件名示例:

Image001 L@ter
Image002 L@ter

我试过这两个命令,

get-childitem * | ForEach { Move-Item -LiteralPath $_.name $_.name.Replace("L@ter","")}
get-childitem * | ForEach { rename-item $_ $_.Name.Replace("L@ter","") }

我希望输出为 Image001,Image002

标签: powershell

解决方案


首先,关于您的命令的一些小细节:

get-childitem * | ForEach { Move-Item -LiteralPath $_.name $_.name.Replace("L@ter","")}

LiteralPath旨在完全按照键入的方式使用。所以我会用它

$ .FullName而不是$ .name如果我必须使用奇怪的路径(如网络共享)。

第二:在move-itemrename-item的 get-help 中,我可以看到-path参数:

Required?                    true
Position?                    0
Default value                None
Accept pipeline input?       True (ByPropertyName, ByValue)

这意味着我们可以通过管道将对象集合导入其中,并且 rename cmdlet 将自动通过该集合:

Get-ChildItem -Path 'c:\tests\' -File -Recurse | Rename-Item -NewName ($_.name -replace ' l@ter') -Force -WhatIf

对于 Drew 和 Js2010 的回复,我已经使这个回复变得多余,但是,由于我是 powershell 的初学者,我发现使用完整的命令更容易理解答案。


推荐阅读