【发布时间】:2018-06-06 19:37:34
【问题描述】:
我在一个文件夹中有很多 .pdf 文件。我还有一个.bat 脚本,它与Pdftk 程序一起工作。但是当我执行.bat 时它不起作用。
按照我的脚本:
@echo off
setlocal enabledelayedexpansion
FOR %%A IN (%*) DO (set command=!command! %%A)
pdftk.exe %command% cat output "%~dp1binder.pdf"
我的.pdf 文件、.bat 脚本和带有它的pdftk.exe libiconv2.dll 都在同一个文件夹中。
有人可以帮助我吗?我需要合并文件夹中的所有.pdf 文件。
谢谢!
伙计们,这个简单的命令对我来说很好用,只有一个问题。如果没有命令中的文件,则不会处理。 看脚本:
@echo off
pdftk fbw1.pdf fbw2.pdf fbw3.pdf fbw4.pdf fbw5.pdf fbw6.pdf fbw7.pdf fbw8.pdf fbw9.pdf fbw10.pdf fbw11.pdf fbw12.pdf fbw13.pdf fbw14.pdf fbw15.pdf fbw16.pdf fbw17.pdf fbw18.pdf fbw19.pdf fbw20.pdf fbw21.pdf fbw22.pdf fbw23.pdf fbw24.pdf fbw25.pdf fbw26.pdf fbw27.pdf fbw28.pdf cat output testieee.pdf >nul 2>nul
例如:如果我没有将文件fbw1.pdf 放入目录中,它将不会处理任何内容。我需要程序处理所有文件,甚至丢失一个或多个...
有人帮忙吗?
谢谢!
好的,pdftk *.pdf cat output combined.pdf 命令现在可以使用,但它不会按顺序合并.pdf 文件。
例如:1.pdf 2.pdf 3.pdf....是我想要的序列,但是命令以这种方式合并:1.pdf 3.pdf 2.pdf 7.pdf....有办法识别序列吗?
谢谢
【问题讨论】:
-
在不知道你传递给批处理诊断的参数的情况下是不可能的。
%*被你传递的所有参数替换,输出的位置由第一个参数的路径%~dp1 -
您是否正在将一堆文件拖放到您的批处理文件中?
-
命令的长度是有限制的。大约 8191 字节。如果将一堆文件拖放到批处理文件上,它会将文件的整个路径作为参数加上带空格的文件路径的引号。根据您删除的文件数量,您将超过最大命令长度限制。
-
如果您阅读过
PDFTK的帮助文件,您会看到以下示例:pdftk *.pdf cat output combined.pdf。换句话说,如果您需要合并的所有文件都在工作目录中,则可以使用通配符来引用所有文件。 -
绝对没有必要使用
FOR命令循环遍历所有参数以将它们分配给环境变量。正如您的代码已经显示的那样,您可以使用通配符访问所有命令行参数,那么您为什么不先尝试一下:pdftk.exe %* cat output "%~dp1binder.pdf"
标签: batch-file pdftk