根据文件名的第一部分合并 PDF 文件 - 如何自动化?

Merging PDF files per the first part of files names - how to automate?

我能够修改我在此处找到的示例 VBA 代码,以从 excel 文件生成 PDF 文件。在编码 运行s 之后,结果是我将有多个 PDF 后缀为 "-index.pdf" 的文件 -(例如,875458-indexl.pdf)我可以将后缀更改为任何内容。

然后我将从与 875458.pdf.

具有相同文件名的 zip 文件中提取另一组 PDF 文件

最后,在一个文件夹中,会有如下多对文件。

875458.pdf
875458-index.pdf
875460.pdf
875460-index.pdf
954784.pdf
954784-index.pdf

我的目标是找到一个w

可以将每一对文件合并为一个文件。

最终结果如下。

(索引文件为第一页)

875458.pdf 
875460.pdf
954784.pdf

我下载了 PDFtk,但我不知道脚本是如何工作的,即使我看到了一些样本,我还是不明白...

如果有人能给我看下面的内容,我将不胜感激。

1) 我应该安装哪些程序 2) 如何命名 batchbash 文件,以及保存文件的位置 3) 如何触发脚本到运行

谢谢。

我找到了 merge/join 两个带有 PDFtk on this page 的 pdf 文件的命令。

setlocal enabledelayedexpansion
for %%# in (*-index.pdf) do (
    set n=%%~n#
    set n=!n:~,-6!
    pdftk A=!n!.pdf B=%%# cat B A output C:\export\done\!n!.pdf
)

这将获取每个 *-index.pdf 并将其与其各自的 *.pdf 合并。

我找到了一个例子如下。当我执行此操作时,我至少会收到以下消息。所以我想我只需要调整下面的脚本以获得正确的文件名。


  1. 执行这个批处理文件时出现错误信息

找不到文件 完毕。输入错误,因此没有创建输出


  1. 文件保存位置和文件名

c:\合并 merge.bat(此文件包含以下代码示例) 845499.pdf 845499-index.pdf 845502.pdf 845502-index.pdf


  1. pdftk 设置

我安装了 pdftk pro,当我在命令行中执行 "PATH" 时它会显示,我还在 c:\merge AND c:\windows\system32[=12 中复制了 pdftk.exe =]


  1. 代码示例


    @回声关闭 setlocal EnableDelayedExpansion

    rem 初始化(删除)"lastFile"和"fileList"变量 设置 "lastFile=" 设置 "fileList="

    rem 下一行获取 "dir /B" 命令的输出,仅显示文件名 rem "for /F" 命令执行目录,获取输出并将每一行分成两部分 "tokens"(“%%a”和“%%b”) rem 与“%%a”中的“”之前的第一部分和“%%b”中的 *rest*(包括进一步的“”)

    for /F "tokens=1* delims=_" %%a in ('dir /B _KM_.*') do (

    rem 如果基本文件名改变了... 如果 "%%a" neq "!lastFile!" (

      rem Process previous file list;
      rem this "if" is just to avoid process the empty list the first time
      if defined fileList (
         pdftk !fileList! output !lastFile!.pdf
      )
    
      rem Reinitialize the new list
      set "lastFile=%%a"
      set "fileList=%%a_%%b"
    

    ) 否则 (

      rem Append this file to current list
      set "fileList=!fileList! %%a_%%b"
    

    )

    )

    rem 处理最后一个列表 pdftk !文件列表!输出 !lastFile!.pdf