You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:20:57