但我之前发布的程序仍然存在问题。我认为我的for循环语句存在问题,因为在我打开文件“passwords.csv”之后,我注意到循环重复了5次。
第一条记录R_000100.pdf最初被分配了密码8337,但在其他行中重复并重新分配了其他随机密码。当我试图打开PDF文件时,似乎分配的最后一个随机密码(即13429)实际上是它的密码,而不是8337。
我应该怎么做才能纠正程序,在所有PDF文件组合并分配密码后,程序已经停止循环并退出?因此在输出文件“passwords.csv”中只有一个条目,并且不会重复5次。
以下是我在Peter Wright的帮助下完成的完整批处理程序。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=1,2 delims=ABCDEF_." %%i in ('dir *.txt *.pdf /b') do (
TXTtoPDF A_%%i.txt A_%%i.pdf -pps4 -pfs10.9
TXTtoPDF B_%%i.txt B_%%i.pdf -pps4 -pfs8.9
TXTtoPDF C_%%i.txt C_%%i.pdf -pps4 -plm50 -prm50 -pfs7.9
TXTtoPDF D_%%i.txt D_%%i.pdf -pps4 -plm60 -prm60 -pfs8.9
TXTtoPDF E_%%i.txt E_%%i.pdf -pps5 -pot -pfs10
TXTtoPDF F_%%i.txt F_%%i.pdf -pps5 -pot -pfs12
set pass=!random!
pdftk *%%i.pdf cat output PDF\R_%%i.pdf user_pw !pass!
echo %%i R_%%i.pdf !pass! >> passwords.csv
)
echo ***************************************************
echo * *
echo * PDF REPORTS SUCCESSFULLY GENERATED. *
echo * PLEASE TYPE EXIT AT COMMAND PROMPT. *
echo * *
echo ***************************************************
pause
exit
答案 0 :(得分:0)
很简单,您需要做的就是为批处理文件提供逻辑,以实现它所在的行。
for /f "tokens=1,2 delims=ABCDEF_." %%i in ('dir *.txt *.pdf /b') do (
set /a count=0
for /f "tokens=1,2 delims=ABCDEF_." %%i in ('dir *.txt *.pdf /b') do (
set /a count+=1
if !count! equ 1 (
注意:在关闭if循环的for循环时添加一个额外的括号
这样,它会计算for-loop解析的每一行。如果您要为第二行或第五行设置密码,请分别将if !count! equ 1 (
替换为if !count! equ 2 (
或if !count! equ 5 (
。
使用for循环时,在所有批处理文件中执行此操作非常有用。默认情况下,在使用实际编程语言时会完成。
希望这会有所帮助。
你的莫娜