我的文件夹中有很多
.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....
有办法识别序列吗?
谢谢
编辑新方法。
:: Q:\Test\2018\06\06\SO_50728273.cmd
@echo off
setlocal enabledelayedexpansion
if "%~1" neq "" (
Echo %~a1|findstr "d" 2>&1>Nul && Pushd "%~f1" || Pushd "%~dp1"
) else (
Echo No arguments, need a path& pause & goto :Eof
)
Del /f binder.bak.pdf 2>&1>Nul
if exist binder.pdf Ren binder.pdf binder.bak.pdf
pdftk.exe *.pdf cat output binder.pdf
PopD
如果不知道你传递给批量诊断的参数是不可能的。%* 会替换为你传递的所有参数,输出的位置由第一个参数 %~dp1 的路径决定
我在我的虚拟磁盘上运行了你的批处理:
之前的目录:
> 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
):
> 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
我也有同样的问题,我也来了。我想我有更好的主意去做。它可能对你有帮助,或者人们将来会来这里。
就我而言,
ls *.pdf > list
for i in `seq 1 340`;do grep "\-$i\-\-" list >> tmp; done
awk '{printf("%s ", $0)}' tmp > oneline
pdftk `cat oneline` cat output test.pdf
适合您的情况
第1步将所有文件名放入一个文件中,如namelist。
ls *.pdf > namelist
第2步对名单进行排序,建议有400个文件。
for i in `seq 1 400`;do grep $i namelist >> sortedNameList;done
第3步重新组织sortedNameList。
awk '{printf("%s ", $0)}' sortedNameList > namesInOneline
第 4 步将所有文件合并为一个 pdf 文件
pdftk `cat namesInOneline` cat output final.pdf
我认为最好的解决方案是
pdftk $(ls -v *.pdf) cat output merged.pdf
这解决了问题,并且比此处提供的其他解决方案干净得多。