Powershell 实现按文件名内日期批量重命名文件咨询
PowerShell 批量重命名文件解决方案
实现逻辑
- 匹配文件名中
yyyy-MM-dd格式的日期字段 - 按规则提取日期字段中的年、月、日拼接新文件名
- 支持预览匹配结果,确认无误后再执行重命名操作,避免误改
操作步骤
第一步:预览匹配结果(无风险,不会修改文件)
将以下代码中的$targetFolder替换为你实际的目标文件夹路径,复制到PowerShell中执行,会打印所有匹配文件的原文件名和对应的新文件名,确认规则是否符合预期:
# 替换为你的目标文件夹完整路径 $targetFolder = "C:\你的文件夹路径" Get-ChildItem -Path $targetFolder -File | ForEach-Object { # 匹配文件名中的日期格式 if ($_.Name -match '_(\d{4})-(\d{2})-(\d{2})_') { $year = $matches[1] $month = $matches[2] $day = $matches[3] # 按规则拼接新文件名,保留原文件扩展名 $newName = "$month$day$($year.Substring(2)) changefile$($_.Extension)" Write-Host "原文件:$($_.Name) → 新文件:$newName" } }
第二步:执行重命名操作
确认预览结果正确后,使用以下代码执行重命名:
# 替换为你的目标文件夹完整路径 $targetFolder = "C:\你的文件夹路径" Get-ChildItem -Path $targetFolder -File | ForEach-Object { if ($_.Name -match '_(\d{4})-(\d{2})-(\d{2})_') { $year = $matches[1] $month = $matches[2] $day = $matches[3] $newName = "$month$day$($year.Substring(2)) changefile$($_.Extension)" # 首次执行可以保留-WhatIf参数预览执行效果,确认没问题后删除该参数即可实际执行重命名 Rename-Item -Path $_.FullName -NewName $newName -WhatIf } }
注意事项
- 执行前建议先备份目标文件夹内的文件,避免操作失误导致文件异常
- 如需遍历子文件夹内的所有文件,可在
Get-ChildItem命令后添加-Recurse参数 - 如需调整新文件名的拼接规则,直接修改
$newName的拼接逻辑即可 - 如存在同一日期多个文件的场景,可额外添加序号逻辑避免重名冲突
内容的提问来源于stack exchange,提问作者MrgeorgeNew
相关产品推荐
相关产品推荐

