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

基于导入CSV批量替换PDF文件名中的旧编号为新编号

批量替换PDF文件名中的指定编号(基于CSV规则)

以下是适配你需求修改后的PowerShell脚本,可从CSV读取编号替换规则,精准修改文件名中的编号部分,不改动其他内容:

# 配置路径:替换为你的PDF文件夹和CSV规则文件实际路径
$targetPath = "C:\Your\PDF\Directory"
$csvPath = "C:\Path\To\RenameRules.csv"

# 将CSV规则转换为哈希表,提升匹配效率
$renameMap = @{}
Import-Csv $csvPath | ForEach-Object {
    $renameMap[$_.oldname] = $_.newname
}

# 遍历目标文件夹内的PDF文件,执行编号替换
Get-ChildItem -Path $targetPath -Filter "*.pdf" | ForEach-Object {
    $newFileName = $_.Name
    # 检查当前文件名是否包含需替换的旧编号
    foreach ($oldId in $renameMap.Keys) {
        if ($newFileName -match [regex]::Escape($oldId)) {
            # 替换旧编号为新编号
            $newFileName = $newFileName -replace [regex]::Escape($oldId), $renameMap[$oldId]
            break # 每个文件仅匹配一个编号,找到后停止遍历规则
        }
    }
    # 若文件名有变化则执行重命名(-WhatIf用于测试,确认无误后可移除)
    if ($newFileName -ne $_.Name) {
        Rename-Item -Path $_.FullName -NewName $newFileName -WhatIf
    }
}

关键细节说明:

  1. 哈希表映射:把CSV中的旧编号与新编号对应存储,比反复遍历CSV更高效,适合批量处理场景。
  2. 正则转义:用[regex]::Escape()处理旧编号,避免编号中含有的特殊字符(如.、*)被当作正则语法解析,确保精确匹配原编号字符串。
  3. 测试模式:脚本中的-WhatIf参数仅输出将要执行的重命名操作,不会实际修改文件名。确认替换逻辑正确后,移除该参数即可执行实际修改。
  4. 终止匹配:break语句确保每个文件只匹配一个编号(符合你的场景需求),避免同一文件被多次替换。

使用步骤:

  1. 准备CSV规则文件,列名必须为oldname和newname,格式与你提供的示例一致。
  2. 修改脚本中的$targetPath和$csvPath为实际路径。
  3. 先运行带-WhatIf的脚本,检查输出的重命名计划是否正确。
  4. 确认无误后,移除-WhatIf参数,执行脚本完成批量替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:42:47