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

如何使用PowerShell对Example系列PDF文件批量补零重命名

PowerShell 批量补全PDF文件名编号解决方案

最优实现代码

仅需一行命令即可完成需求,自动匹配Example*.pdf规则的文件,将文件名中的1~2位数字补前导零到3位,已为3位的编号保持不变:

Get-ChildItem -Filter "Example*.pdf" | Rename-Item -NewName {
    $_.Name -replace '(_)(\d{1,2})(\.pdf)$', { $_.Groups[1].Value + $_.Groups[2].Value.PadLeft(3,'0') + $_.Groups[3].Value }
} -WhatIf

说明:执行时先保留-WhatIf参数,控制台会输出所有待修改的文件名预览,确认结果符合预期后,删除-WhatIf参数即可实际执行重命名操作。

原有代码问题说明

  1. 第一段拆分逻辑的报错原因:
  • 循环中使用了未定义的$Path变量,Rename-Item无法读取目标文件路径
  • 直接对$_(FileInfo对象)执行Split操作,需调用$_.Name属性获取文件名字符串后再拆分
  1. 第二段正则代码无效果的原因:
  • 过滤规则ex*和实际要匹配的Example*规则不一致
  • 替换时直接操作$_对象而非$_.Name字符串属性
  • 正则规则未匹配文件名中的下划线分隔符,匹配逻辑不生效

修正后的拆分逻辑实现

如果要沿用你原本的拆分思路,修正后的代码如下:

Get-ChildItem -Filter "Example*.pdf" | ForEach-Object {
    $baseName = $_.BaseName
    $num = $baseName.Split('_')[1].PadLeft(3,'0')
    Rename-Item -Path $_.FullName -NewName "Example_$num.pdf"
}

内容的提问来源于stack exchange,提问作者J Web

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:15:03