对于批处理程序中的循环语句重复5次

时间:2013-07-18 10:08:56

标签: for-loop batch-file pdf-generation

但我之前发布的程序仍然存在问题。我认为我的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

1 个答案:

答案 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循环时,在所有批处理文件中执行此操作非常有用。默认情况下,在使用实际编程语言时会完成。

希望这会有所帮助。

你的莫娜