我无意中将其命名为filename.jpg.jpg
。我希望的最终状态是文件名为filename.jpg
。我如何使用PowerShell来解决这个问题?使用powershell将file.jpg.jpg重命名为file.jpg
我已经尝试了许多来自博客的例子,并发现第一个.jpg
显然被视为文件扩展名。任何援助将不胜感激,因为我唯一的选择是手动重命名所有文件。
我无意中将其命名为filename.jpg.jpg
。我希望的最终状态是文件名为filename.jpg
。我如何使用PowerShell来解决这个问题?使用powershell将file.jpg.jpg重命名为file.jpg
我已经尝试了许多来自博客的例子,并发现第一个.jpg
显然被视为文件扩展名。任何援助将不胜感激,因为我唯一的选择是手动重命名所有文件。
试试这个,
Get-childItem constant* | % {rename-item $_.name ($_.name -replace '.jpg.jpg','.jpg')}
它将取代.jpg.jpg到JPG
这也有可能匹配其他东西,如sjpg1jpg ....如果你使用正则表达式或者至少要意识到风险,你应该避开你的期限。 – Matt
只有当工作目录与要重命名的文件相同时,'name'属性才有效。 –
您可以使用Get-ChildItem cmdlet来检索文件,并使用-Filter
参数预过滤它。
,只要您工作目录是指出错误,你应该用的FullName
属性而不是Name
为Rename-Item cmdlet的。
这里我使用的regex
转义期(马特提到),并确保匹配文件名的末尾($
)。
Get-ChildItem -Path 'YOUR_PATH_HERE' -Filter '*.jpg.jpg' |
foreach { Rename-Item $_.FullName ($_.FullName-replace '\.jpg\.jpg$','.jpg') }
注意:如果您需要递归重命名这些文件,你只需要添加-recurse
到Get-ChildItem
cmdlet的。
你好,任何bash解决方案对你有好处?所有文件.jpg.jpg都在同一个目录中? – JazZ
@AdrienLeber PowerShell意味着Windows,它不包含bash。 –
好吧,删除我的答案。谢谢瑞恩。 – JazZ