PowerShell中仅替换文件名日期部分的下划线为短横线
PowerShell 仅替换PDF文件名日期部分的下划线
要实现只替换文件名开头日期部分的下划线(保留后续下划线),可以利用PowerShell的正则表达式替换功能,精准匹配日期格式的前缀。
解决方案代码
# 先预览替换结果,确认无误后再执行重命名 Get-ChildItem -Filter *.pdf | ForEach-Object { $newName = $_.Name -replace '^(\d{4})_(\d{2})_(\d{2})', '$1-$2-$3' Write-Host "原文件名: $($_.Name) → 新文件名: $newName" } # 确认结果正确后,执行实际重命名 Get-ChildItem -Filter *.pdf | ForEach-Object { $newName = $_.Name -replace '^(\d{4})_(\d{2})_(\d{2})', '$1-$2-$3' Rename-Item -Path $_.FullName -NewName $newName }
代码说明
Get-ChildItem -Filter *.pdf:仅筛选当前目录下的PDF文件,避免误处理其他类型文件。^(\d{4})_(\d{2})_(\d{2}):正则表达式匹配文件名开头的日期格式:^表示匹配字符串的起始位置(\d{4})捕获4位数字的年份,(\d{2})分别捕获2位数字的月份和日期
'$1-$2-$3':将捕获的年份、月份、日期用短横线连接,替换原来的下划线分隔格式Rename-Item -Path $_.FullName:使用文件完整路径执行重命名,避免因同名或路径问题报错
原代码问题说明
你之前使用的$_.Name.Replace("_","-")会替换文件名中所有下划线,而正则表达式替换可以精准定位到日期部分的下划线,只修改需要替换的位置。
内容的提问来源于stack exchange,提问作者Wielki Biszkopt
相关产品推荐
相关产品推荐

