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

使用PDFtk Pro按文件名唯一标识批量合并PDF的批处理脚本求助

批量合并PDF批处理调整方案

原脚本问题说明

原来的脚本存在三个核心问题:

  1. 固定截取文件名后30位的逻辑不通用,无法适配不同长度的第三段标识
  2. 没有按第三段标识分组的逻辑,仅支持两两合并,无法处理3份及以上同标识文件的合并需求
  3. 输出路径的写入逻辑存在覆盖问题,运行时容易出现读写冲突报错

实现逻辑

  • 先遍历所有符合命名规则的PDF文件,按下划线拆分文件名提取第三段作为分组标识,将同标识的文件归入同一分组
  • 遍历所有分组:单文件分组直接复制到输出目录,多文件分组调用pdftk按序号顺序合并后输出

完整可运行脚本

@echo off
setlocal enabledelayedexpansion

:: 配置输出目录,请确保目录已提前创建
set "OUTPUT_DIR=C:\IN\_fileNames\Merge\Files\"

:: 清空历史分组变量
for /f "delims==" %%a in ('set group_ 2^>nul') do set "%%a="
for /f "delims==" %%a in ('set count_ 2^>nul') do set "%%a="

:: 第一步:遍历所有待合并PDF,按第三段标识分组
for %%f in (115_*.pdf) do (
    set "file_name=%%~nf"
    :: 按下划线拆分取第三段作为分组ID
    for /f "tokens=3 delims=_" %%k in ("!file_name!") do set "group_id=%%k"
    :: 分组计数+1,存入当前分组的文件列表
    set /a count_!group_id! += 1
    set "group_!group_id!_!count_!group_id!"=%%f
)

:: 第二步:按分组处理合并/复制
for /f "tokens=2 delims=_" %%g in ('set count_ 2^>nul') do (
    set "current_group=%%g"
    set "file_num=!count_%%g!"
    if !file_num! equ 1 (
        :: 单文件直接复制到输出目录
        call set "source_file=%%group_!current_group!_1%%"
        copy "!source_file!" "!OUTPUT_DIR!!current_group!.pdf" >nul
    ) else (
        :: 拼接多文件合并参数
        set "merge_param="
        for /l %%i in (1,1,!file_num!) do (
            call set "current_file=%%group_!current_group!_%%i%%"
            set "merge_param=!merge_param! "!current_file!""
        )
        :: 调用pdftk合并,输出文件用分组ID命名
        pdftk !merge_param! cat output "!OUTPUT_DIR!!current_group!.pdf"
    )
)

echo 所有PDF处理完成
endlocal
pause

使用注意事项

  • 如果系统没有将pdftk加入环境变量,请将脚本中的pdftk替换为你本地pdftk的完整安装路径,例如"C:\Program Files (x86)\PDFtk\bin\pdftk.exe"
  • 文件名必须严格遵循115_xxx_第三段标识_xxx_序号.PDF的下划线分隔规则,否则会出现分组识别错误
  • 同组文件会按序号从小到大的顺序合并,如需调整合并顺序可以修改遍历文件的排序逻辑
  • 请提前创建脚本中配置的输出目录,避免出现路径不存在的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:06:04