根据文件名的第一部分合并 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) 如何命名 batch
或 bash
文件,以及保存文件的位置
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 合并。
我找到了一个例子如下。当我执行此操作时,我至少会收到以下消息。所以我想我只需要调整下面的脚本以获得正确的文件名。
- 执行这个批处理文件时出现错误信息
找不到文件
完毕。输入错误,因此没有创建输出
- 文件保存位置和文件名
c:\合并
merge.bat(此文件包含以下代码示例)
845499.pdf
845499-index.pdf
845502.pdf
845502-index.pdf
- pdftk 设置
我安装了 pdftk pro,当我在命令行中执行 "PATH" 时它会显示,我还在 c:\merge AND c:\windows\system32[=12 中复制了 pdftk.exe =]
代码示例
@回声关闭
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
我能够修改我在此处找到的示例 VBA
代码,以从 excel
文件生成 PDF
文件。在编码 运行s 之后,结果是我将有多个 PDF
后缀为 "-index.pdf"
的文件 -(例如,875458-indexl.pdf
)我可以将后缀更改为任何内容。
然后我将从与 875458.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) 如何命名 batch
或 bash
文件,以及保存文件的位置
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 合并。
我找到了一个例子如下。当我执行此操作时,我至少会收到以下消息。所以我想我只需要调整下面的脚本以获得正确的文件名。
- 执行这个批处理文件时出现错误信息
找不到文件 完毕。输入错误,因此没有创建输出
- 文件保存位置和文件名
c:\合并 merge.bat(此文件包含以下代码示例) 845499.pdf 845499-index.pdf 845502.pdf 845502-index.pdf
- pdftk 设置
我安装了 pdftk pro,当我在命令行中执行 "PATH" 时它会显示,我还在 c:\merge AND c:\windows\system32[=12 中复制了 pdftk.exe =]
代码示例
@回声关闭 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