0

我再次需要一些帮助。我目前正在做一个批处理程序,它执行以下操作:

在 \Reports\ 文件夹中存储了几个文本文件。例子,

- A_000001.txt
 - A_000002.txt
 - B_000001.txt
 - B_000002.txt
 - C_000001.txt
 - C_000002.txt
 - D_000001.txt
 - D_000002.txt
 - E_000001.txt
 - E_000002.txt
 - F_000001.txt
 - F_000002.txt
  1. 批处理程序使用“AdultPDF Txt to PDF converter”命令行功能将所有文本文件单独转换为PDF。

  2. 文件名最后 6 个字符相同的转换后的 PDF 文件(例如A_000001.pdf,... F_000001.pdf)被组合成一个 PDF,然后给出输出文件名R_000001.pdf。合并的 PDF 文件存储在\Reports\PDF Reports\文件夹中。

  3. 在我的批处理程序中我想做的最后一件事是为组合的 PDF 文件分配一个密码。密码将来自passwords.csv包含以下列的 csv 文件 ( ):

组合 PDF 的文件名,PDF 的密码

例如:

- R_000001.pdf,abcd1234
 - R_000002.pdf,efgh5678
 - R_000003.pdf,ijkl0910

为了解决第 2 和第 3 项,我安装了程序 PDFTK(或 PDF ToolKit)。它具有命令行功能,可以将具有不同参数的 PDF 文件组合在一起,包括将密码添加到 PDF 文件中。下面是我的批处理程序中的一行,它显示了如何将多个 PDF 文件合并为一个,并将密码添加到 PDF 文件中。

pdftk *%%j.pdf cat output "PDF Reports\R_%%j.pdf" user_pw abcd1234

我想知道我将如何做到这一点,例如,如果组合 PDF 的文件名是 R_000002.pdf,批处理程序将查看 passwords.csv 中列出的文件名,如果找到匹配的文件名,则密码旁边它(即 efgh5678)将分配给组合的 PDF。

下面是我迄今为止完成的完整批处理程序。任何帮助将不胜感激。

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION 
SET prevsuff=::

for /f "tokens=1,2 delims=_." %%i in ('dir ?_*.txt /b ^|sort /+2') do IF NOT !prevsuff!==%%j (
 SET prevsuff=%%j
 IF EXIST A_%%j.txt TXTtoPDF A_%%j.txt A_%%j.pdf -pps4 -pfs10.9
 IF EXIST B_%%j.txt TXTtoPDF B_%%j.txt B_%%j.pdf -pps4 -pfs8.9
 IF EXIST C_%%j.txt TXTtoPDF C_%%j.txt C_%%j.pdf -pps4 -plm50 -prm50 -pfs7.9
 IF EXIST D_%%j.txt TXTtoPDF D_%%j.txt D_%%j.pdf -pps4 -plm60 -prm60 -pfs8.9
 IF EXIST E_%%j.txt TXTtoPDF E_%%j.txt E_%%j.pdf -pps5 -pot -pfs10
 IF EXIST F_%%j.txt TXTtoPDF F_%%j.txt F_%%j.pdf -pps5 -pot -pfs12
 pdftk *%%j.pdf cat output "PDF Reports\R_%%j.pdf" user_pw abcd1234
)
4

1 回答 1

0

要读取 csv,请使用

FOR /F "DELIMS=, TOKENS=1,2" %%p IN (csvfile) DO command

对于csvfile中的每一行,都会调用命令%%p将包含 pdf 文件名,%%q将包含密码。

要搜索特定的 pdf:

FOR /F "DELIMS=, TOKENS=1,2" %%p IN (csvfile) DO IF /I "%%p"=="R_%%j.pdf" pdftk *%%j.pdf cat output "PDF Reports\R_%%j.pdf" user_pw %%q
于 2013-07-19T11:12:21.810 回答