我需要一些幫助。我目前正在執行批處理程序,它執行以下操作:如何使用批處理程序爲PDF文件生成隨機密碼
在\ Reports \文件夾中存儲了幾個文本文件。例如,
A_000100.txt,A_000200.txt,B_000100.txt,B_000200.txt,C_000100.txt,C_000200.txt,D_000100.txt,D_000200.txt,E_000100.txt,E_000200.txt,F_000100.txt ,F_000200.txt
- 所有文本文件都必須使用命令行單獨轉換爲PDF。爲了解決這個問題,我安裝了「AdultPDF TXT to PDF Converter」程序。它具有使用不同參數將文本文件轉換爲PDF的命令行功能。以下是顯示文本文件如何轉換爲PDF的一行。在下面的示例代碼中,輸出PDF文件的紙張設置爲字母大小(-pps4),字體大小爲10.9(-pfs10.9)。
TXTtoPDF A_000100.txt A_000100.pdf -pps4 -pfs10.9
後的每個文本文件被逐一轉換成PDF,這對他們的文件名(例如,A_000100.pdf,B_000100.pdf,C_000100相同的最後6個字符的PDF文件。 PDF等)應該合併成一個PDF文件,輸出文件名將是R_000100.pdf。輸出的PDF文件將存儲在相同的文件夾中。
組合的PDF文件(例如R_000100.pdf)必須用密碼加密,但應該隨機生成。但每個組合PDF文件的密碼應該彼此不同。
- 爲了解決項目號2 & 3,I安裝該程序PDFTK(或PDF工具包)。它具有命令行功能,可將PDF文件與不同參數結合使用,包括將密碼添加到PDF文件中。下面是一行顯示如何將多個PDF文件合併爲一個,並將隨機密碼添加到PDF文件中。
pdftk *%%i.pdf cat output R_%%i.pdf owner_pw %random%
- 最後,一個日誌文件(.csv)應當設立將列出組合PDF的文件名與每個PDF文件中的隨機生成的密碼一起文件。下面是我用來做這個代碼:
echo %%i R_%%i.pdf %random% >> passwords.csv
實際上,隨機密碼將它們存儲到一個CSV文件的生成,並在那裏我有一個問題。它似乎沒有工作。我無法弄清楚如何正確地做到這一點。任何精通批量編程的人都可以幫助我嗎?以下是我迄今完成的完整批處理程序。如果需要對我的程序進行一些更正以使其更簡單,請不要猶豫糾正。對你的幫助表示感謝。謝謝!
@echo off
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
pdftk *%%i.pdf cat output PDF\R_%%i.pdf owner_pw %random%
echo %%i R_%%i.pdf %random% >> passwords.csv
)
echo ***************************************************
echo * *
echo * PDF REPORTS SUCCESSFULLY GENERATED. *
echo * PLEASE TYPE EXIT AT COMMAND PROMPT. *
echo * *
echo ***************************************************
pause
exit
非常感謝您的回覆!它真的有效。另外,感謝您提供關於如何擴展密碼長度的代碼以及從密碼中選擇前8個字符的代碼。這是我需要密碼的確切長度。 –
對於我上面發佈的程序,我仍然遇到問題。我認爲我的for循環語句存在問題,因爲在打開文件「passwords.csv」後,我注意到循環重複了5次。例如,R_000100.pdf在第1,3,5,7和9行中使用不同的密碼。但最後一個密碼是正確的。我應該糾正哪些問題,以便在所有PDF文件合併並分配密碼後,程序將已經停止循環並退出?因此在輸出文件「passwords.csv」中只有一個條目,並且不會重複5次。非常感謝! –