我有几个 pdf 文件,我想使用 pdftk 合并这些文件。我可以这样做
C:\pdftk *.pdf cat output merged.pdf
这会使用字母顺序合并文件,但我想使用创建日期(时间戳)对文件进行排序。这怎么可能?我使用的是 Win XP。
答案1
我认为最好的方法是将日期添加到文件名中。你可以这样做批量重命名实用程序,它是一款非常强大的实用程序,而且免费。
或者,您可以使用其他软件通过 GUI 合并/拆分 pdf 文件,例如 PDFsam。
答案2
您可以创建按创建日期排序的 PDF 文件列表:
dir /b /tc /od *.pdf > my-pdf-filelist.txt
(如果您想要列表 - 而不是按创建时间排序 - 按访问时间排序,请使用' /ta
'而不是' /tc
';如果您想要按修改时间排序,请使用' /tw
'。)
然后使用此列表创建另一个临时列表文件,其中包含时间戳和 PDF 文件名,并在同一行添加日期 + 时间:
for /f "usebackq" %i in (my-pdf-filelist.txt) ^
do (echo. %~ti %~nxi >> my-pdf-filelist.2)
现在检查你的文件列表是否my-pdf-filelist.2
包含如下行:
05/27/2009 06:08 AM fontproblems-in-footer-16_9_1557.pdf
01/20/2010 09:22 AM trainschedule-hannover.pdf
06/05/2010 07:30 PM Figure_001-a.pdf
根据语言和区域设置的设置,时间戳格式可能会有所不同,您可能需要调整以下步骤。就我而言,我需要处理“AM/PM”以及日期字符串,以确保文件名稍后的字母顺序与时间戳顺序相同。
最后,使用此临时列表文件重命名原始文件名,以便它们包含时间戳作为其原始名称的前缀。但首先测试预期的命令如下:
for /f "usebackq tokens=1,2,3,4,5,6,7 delims=/: " %i in (my-pdf-filelist.2) ^
do (echo. "%o" will be renamed to: "%k-%j-%i-%n-%l-%m-%o")
仔细检查这是否能按预期工作。最后,进行真正的重命名:
for /f "usebackq tokens=1,2,3,4,5,6,7 delims=/: " %i in (my-pdf-filelist.2) ^
do (ren "%o" "%k-%j-%i-%n-%l-%m-%o")
现在您的 PDF 的命名方式使得“字母顺序”==“时间戳顺序”,您可以简单地运行pdftk.exe
:
pdftk.exe *.pdf cat output merged.pdf