我有以下情况:
我有5个不同的文件夹包含PDF文件。
文件夹1 包含一个PDF - 首页,例如Front Page.pdf
这应该是每个新生成的PDF文件的首页。
文件夹2 包含不同的命名PDF文件,每个文件都以 1 _ FileName 开头,例如1_abcd_123.pdf
,{{1} }。字符数不一样,唯一常见的是它们都以1_ghi_675.pdf
开头
这应该是第2页。
文件夹3 包含相同数量的PDF文件,例如文件夹2 。 PDF文件的名称与文件夹2 完全相同,但它们以1_
开头。
文件夹4 包含相同数量的PDF文件,例如文件夹2 和文件夹3 。 PDF文件的名称与文件夹2 和文件夹3 完全相同,但它们都以2_
开头。
文件夹5 包含一个PDF,例如3_
这应该是每个生成的PDF中的最后一页。
现在我想将首页和文件夹2,3,4和最后一页中的3个匹配的PDF文件合并为一个PDF。
我开始在线研究,发现应该在批处理过程中使用LastPage.pdf
这样的PDF合并来完成。
此示例FOR loop group each iteration with same prefix in one line中的问题接近我的问题。但不同之处在于我有不同的文件夹,并且该过程应该在名称的末尾而不是在开头寻找匹配的数据。
任何人都可以提供帮助吗?
我根本没有这个领域的经验,但我尽力尽力进入这个话题。
答案 0 :(得分:0)
下面的演示批处理代码演示了如何
#
,%%~nx#
(文件名和文件扩展名)拆分为两部分,因为tokens=1*
基于第一个下划线,因为delims=_
in文件名称
1
被分配给循环变量I
,后者未被进一步使用J
之后的所有内容,这是ASCII表中I
之后的下一个字符演示代码:
@echo off
set "SourceFolder=C:\Temp"
for %%# in ("%SourceFolder%\Folder 2\*") do (
for /F "tokens=1* delims=_" %%I in ("%%~nx#") do (
echo "%SourceFolder%\Folder 1\Front Page.pdf" "%%#" "%SourceFolder%\Folder 3\2_%%J" "%SourceFolder%\Folder 4\3_%%J" "%SourceFolder%\Folder 5\LastPage.pdf" "%SourceFolder%\%%J"
)
)
set "SourceFolder="
1_abcd_123.pdf
中文件夹2 中的两个文件1_ghi_675.pdf
和C:\Temp
的输出为:
"C:\Temp\Folder 1\Front Page.pdf" "C:\Temp\Folder 2\1_abcd_123.pdf" "C:\Temp\Folder 3\2_abcd_123.pdf" "C:\Temp\Folder 4\3_abcd_123.pdf" "C:\Temp\Folder 5\LastPage.pdf" "C:\Temp\abcd_123.pdf"
"C:\Temp\Folder 1\Front Page.pdf" "C:\Temp\Folder 2\1_ghi_675.pdf" "C:\Temp\Folder 3\2_ghi_675.pdf" "C:\Temp\Folder 4\3_ghi_675.pdf" "C:\Temp\Folder 5\LastPage.pdf" "C:\Temp\ghi_675.pdf"
我没有 PDFTK 下载,安装和阅读文档。因此,最终需要的是代替命令 ECHO 将5个输入PDF文件合并到一个新的输出PDF文件中,必须自己找到。
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
echo /?
for /?
set /?