从文件夹中的 PDF 文件中删除最后 2 页的批处理

Batch for removing last 2 pages from PDF files on a folder

我正在使用 PDFtk 从特定文件夹中删除一堆 PDF 的最后 2 页。

为了在文件中单独删除它,这段代码工作得很好,因为最后两页从 original.pdf 中删除,并且新创建的 reduced.pdf 副本没有最后两页

@echo off
cd "C:\Program Files (x86)\PDFtk\bin"
start pdftk.exe C:\Desktop\long\original.pdf cat 1-r3 output C:\Desktop\short\reduced.pdf

pause

Fyi,pdf 文件都有各种字母数字文件名和 - 作为文件名单词之间的分隔符,例如游行活动-2022.pdf

我现在需要的是如何自动化,这样脚本就会遍历 long 文件夹中的每个 pdf 文件,并通过命令创建一个具有相同文件名的新副本到文件夹

这个任务可以用一个批处理文件完成,只需要一个命令行:

@for %%I in ("C:\Desktop\long\*.pdf") do @"C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "%%I" cat 1-r3 output "C:\Desktop\short\%%~nxI" && echo Successfully processed "%%~nxI" || echo ERROR: Failed to process "%%~nxI"

此命令行使用Windows命令FOR来处理指定文件夹中的所有PDF文件。对于每个 PDF 文件,执行 pdftk,当前 PDF 文件的完全限定文件名作为输入文件名,文件名 + 具有不同目录路径的扩展名作为输出文件名。 运行 for /? 在命令提示符中 window 获取有关此命令的帮助。

pdftk.exe 退出时输出成功消息,值为 0。否则,错误消息将在 pdftk.exe 退出时输出,值不等于 0

两个@是为了抑制[​​=32=]FOR命令行的输出和每个执行的pdftk命令行的输出正在处理指定文件夹中的PDF文件。

有关条件运算符 &&|| 的说明,请参阅 single line with multiple commands using Windows batch file