我有多个文件夹,每个文件夹包含多个 pdf 图像文件,如下所示:
Folder 1
file1.pdf
file2.pdf
file3.pdf
...
file100.pdf
Folder 2
file1.pdf
file2.pdf
file3.pdf
...
file100.pdf
Folder 3
file1.pdf
file2.pdf
file3.pdf
...
file100.pdf
...
Folder 94
file1.pdf
file2.pdf
file3.pdf
...
file100.pdf
有没有办法创建一种脚本,将每个文件夹一次性输出为一个 pdf 文件,如下所示:
Folder1.pdf
Folder2.pdf
Folder3.pdf
...
Folder94.pdf
答案1
将文件夹中的 PDF 文件合并为与文件夹名称匹配的一个 PDF 文件
由于您有一个将所有 JPG 文件转换为 PDF 文件的解决方案,因此您需要一个解决方案,将文件夹中的所有 PDF 文件合并为一个按文件名按时间顺序合并的单个 PDF 文件。
您可以使用PDFtk 免费及其 CLI PDFtk使用cat
批处理脚本中的参数自动执行将文件夹内的所有 PDF 文件转换为以文件夹名称作为文件名的单个 PDF 的操作。
“PDFtk Free 是我们友好的图形工具,用于快速合并和拆分 PDF 文档和页面。您可以随意免费使用。”
“高级用户:PDFtk Free 附带我们的命令行工具 PDFtk Server。因此,您可以同时获得 PDFtk 的 GUI 和命令行界面!”
批处理脚本
笔记:该
SourceParentDir=
值将是您需要合并的 PDF 文件所在子文件夹的完整路径。
@ECHO OFF
SET "SourceParentDir=C:\Root\Parent\Folder"
FOR /R "%SourceParentDir%" %%A IN (.) DO (
IF /I NOT [%%~A]==[%SourceParentDir%\.] pdftk "%SourceParentDir%\%%~NA\*.pdf" cat output "%SourceParentDir%\%%~NA.pdf"
)
PAUSE
EXIT
批处理脚本(逆序)
@ECHO OFF
SET "SourceParentDir=C:\Root\Parent\Folder"
FOR /R "%SourceParentDir%" %%A IN (.) DO (
IF /I NOT [%%~A]==[%SourceParentDir%\.] pdftk "%SourceParentDir%\%%~NA\*.pdf" cat output "%SourceParentDir%\temp.pdf"
IF EXIST "%SourceParentDir%\temp.pdf" pdftk "%SourceParentDir%\temp.pdf" cat end-1 output "%SourceParentDir%\%%~NA.pdf"
IF EXIST "%SourceParentDir%\%%~NA.pdf" IF EXIST "%SourceParentDir%\temp.pdf" DEL /Q /F "%SourceParentDir%\temp.pdf"
)
PAUSE
EXIT
更多资源
-
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] Walks the directory tree rooted at [drive:]path, executing the FOR statement in each directory of the tree. If no directory specification is specified after /R then the current directory is assumed. If set is just a single period (.) character then it will just enumerate the directory tree.
批量替换 (FOR /?)
此外,FOR 变量引用的替换功能也得到了增强。现在您可以使用以下可选语法:
%~nI - expands %I to a file name only
pdftk.exe --Help
cat [<page ranges>] Assembles (catenates) pages from input PDFs to create a new PDF. Use cat to merge PDF pages or to split PDF pages from documents. You can also use it to rotate PDF pages. Page order in the new PDF is specified by the order of the given page ranges. Page ranges are described like this: <input PDF handle>[<begin page number>[-<end page num- ber>[<qualifier>]]][<page rotation>]