For loop 批处理程序中的For循环语句重复5次

For loop 批处理程序中的For循环语句重复5次,for-loop,batch-file,pdf-generation,For Loop,Batch File,Pdf Generation,但我仍然有一个关于我之前发布的程序的问题。我认为我的for循环语句有问题,因为在打开文件“passwords.csv”后,我注意到循环重复了5次 第一条记录R_000100.pdf最初分配了密码8337,但在其他行中重复,并使用其他随机密码重新分配。当我试图打开PDF文件时,似乎最后分配的随机密码(13429)实际上是它的密码,而不是8337 在所有PDF文件合并并分配密码后,程序将停止循环并退出,我应该如何纠正该程序?因此,在输出文件“passwords.csv”中只有一个条目,不会重复5次

但我仍然有一个关于我之前发布的程序的问题。我认为我的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

很简单,你要做的就是给批处理文件一个逻辑,让它知道它在哪一行

替换: 与: 注意:在为if循环关闭for循环时添加一个额外的括号

这样,它将对循环解析的每一行进行计数。如果要设置第二行或第五行的密码,请在以下情况下替换
If!计数equ 1(
if!count!equ 2(
if!count!equ 5(

在使用for循环时,在所有批处理文件中执行此操作非常有用。默认情况下,在使用实际编程语言时执行此操作

希望这有帮助


您的Mona

我尝试使用您的代码,但结果是只创建了一个组合PDF文件。例如,如果我将其设置为equ 1,则只创建R_000001.PDF。如果设置为equ 5,则只创建R_00005.PDF,依此类推。是的,它在password.csv中只创建了一个条目,但它无法同时为每个集合创建组合PDF(A_000001.pdf,…F_00001.pdf应该有一个组合的pdf R_00001.pdf,依此类推)。无论如何,Peter Wright先生在我的另一篇文章中所做的修订已经解决了这一问题。但感谢您的建议。您在每行分析中的输入非常有用。您可以使用嵌套的for循环,一个用于创建您所需的尽可能多的.pdf文件,另一个用于分析行输入。要在(1,1,[需要创建的pdf文件数量])执行(但是,请确保您的变量(%%a和%%i)没有混淆。注意:我不习惯
TXTtoPDF
,因此我无法真正看到发生了什么,但除此之外,您应该能够使用
for/l
来解决问题。
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 (