Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 将.pdf文件与Pdftk合并_Batch File_Pdftk - Fatal编程技术网

Batch file 将.pdf文件与Pdftk合并

Batch file 将.pdf文件与Pdftk合并,batch-file,pdftk,Batch File,Pdftk,我在一个文件夹中有许多.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脚本和带有它的libiconv2.dll都在同一个文件夹中

我在一个文件夹中有许多
.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
脚本和带有它的
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….
有办法识别序列吗


感谢您编辑新方法。

  • 如果将文件或文件夹拖放到批处理或传递至少一个文件/文件夹
  • 以下批次将更改为引用的文件夹和
  • 处理该文件夹中的所有pdf文件,并将其合并到binder.pdf中
  • 最终存在的binder.pdf重命名为binder.bak.pdf



不知道传递给批处理诊断的参数是什么是不可能的。%*被替换为传递的所有参数,输出的位置由第一个参数%dp1的路径决定

我在我的RAMA磁盘上运行了你的批处理:

前署长:

> dir A:\
 Verzeichnis von A:\

2018-06-06  21:57            65.381 SO_5072812.pdf
2018-06-06  21:56               163 SO_50728273.cmd
2018-06-06  21:55            60.649 SO_50728273.pdf
               3 Datei(en),        126.193 Bytes
               0 Verzeichnis(se),  1.049.452.544 Bytes frei
之后(我将批次命名为
SO\u 50728273.cmd
):


不知道传递给批处理诊断的参数是什么是不可能的。
%*
将替换为传递的所有参数,输出的位置由第一个参数的路径决定
%~dp1
是否将一组文件拖放到批处理文件中?命令的长度是有限制的。大约8191字节。如果将一组文件拖放到批处理文件上,它会将文件的整个路径作为参数加上带空格的文件路径引号。根据丢弃的文件数量,您将超过最大命令长度限制。如果您阅读了
PDFTK
的帮助文件,您将看到以下示例:
PDFTK*.pdf cat output combined.pdf
。换句话说,如果需要合并的所有文件都在工作目录中,则可以使用通配符引用所有文件。完全不需要使用
FOR
命令循环所有参数以将其分配给环境变量。正如您的代码所示,您可以使用通配符访问所有命令行参数,那么为什么不先尝试一下:
pdftk.exe%*cat输出“%~dp1binder.pdf”
bat需要找到目录中的所有.pdf文件,然后自动合并…在同一文件夹中使用所有pdf的问题是,在连续运行时会包含binder.pdf。@LotPings,我没有PDFTK可供测试,但在他们的网站上,他们确实给出了一个例子:
PDFTK*.pdf cat output combined.pdf
。所以我想知道程序是否知道它正在创建的PDF,而没有包含它?@Squashman很好,刚刚测试过,您是对的,输出文件会自动被排除。@LotPings,因此,如果输出文件已经是文件夹中的一个现有文件,它将给您该错误,但如果您确保先删除它,一切正常?
> dir A:\
 Verzeichnis von A:\

2018-06-06  21:57            65.381 SO_5072812.pdf
2018-06-06  21:56               163 SO_50728273.cmd
2018-06-06  21:55            60.649 SO_50728273.pdf
               3 Datei(en),        126.193 Bytes
               0 Verzeichnis(se),  1.049.452.544 Bytes frei
> SO_50728273.cmd a:\*.pdf

> dir
 Verzeichnis von A:\

2018-06-06  21:58           125.756 binder.pdf
2018-06-06  21:57            65.381 SO_5072812.pdf
2018-06-06  21:56               163 SO_50728273.cmd
2018-06-06  21:55            60.649 SO_50728273.pdf
               4 Datei(en),        251.949 Bytes
               0 Verzeichnis(se),  1.049.260.032 Bytes frei