我手边的问题是下载pdf文件并将它们全部发送到打印机。批处理打印 - 批处理脚本 - fortr循环中的findstr条件
我通过FTP下载正确的所有文件进入我的本地目录:然后
文件名= FtpScript.ftp
open ftp.domain.com
username
password
!:--- FTP commands below here ---
lcd local/Directory
cd /remote/Directory
binary
mget "*.pdf"
prompt
disconnect
quit
此批处理文件调用FTP脚本。
文件名= retrieve_print.bat
@ftp -i -s:"C:\Scripts\FtpScript.ftp"
set mm=%date:~4,2%
set dd=%date:~7,2%
set yy=%date:~-4%
IF NOT EXIST {C:\Users\print_test2\print_%mm%_%yy%}(mkdir C:\Users\print_test2\print_%mm%_%yy%)
IF NOT EXIST C:\Users\print_test2\print_%mm%_%yy%\uploaded_%mm%_%dd%_%yy%.txt (
@echo Uploaded Text -- Date: %date% Time : %time% >> C:\Users\print_test2\print_%mm%_%yy%\uploaded_%mm%_%dd%_%yy%.txt
)
IF NOT EXIST C:\Users\print_test2\print_%mm%_%yy%\printed_%mm%_%dd%_%yy%.txt (
@echo Printed Text -- Date: %date% Time : %time% >> C:\Users\print_test2\print_%mm%_%yy%\printed_%mm%_%dd%_%yy%.txt
)
REM LOOP THROUGH PDFs THAT WERE UPLOADED AND INSERT THE NAMES INTO THE UPLOADED_*_*.txt TEXT FILE
FOR %%x in ( C:\Users\print_test2\print_%mm%_%yy%\*.pdf) DO (
findstr "%%~nxx" C:\Users\print_test2\print_%mm%_%yy%\uploaded_%mm%_%dd%_%yy%.txt
@ECHO Error level = %errorlevel%
@ECHO %%~nxx
@pause
IF NOT %errorlevel% == 0 (
@echo %%~nxx >> C:\Users\print_test2\print_%mm%_%yy%\uploaded_%mm%_%dd%_%yy%.txt
)
)
REM LOOP THROUGH PDFs THAT WERE UPLOADED AND PRINT THEM, THEN INSERT THEM INTO THE PRINTED_*_*.txt TEXT FILE TO SUPPRESS DUPLICATE PRINTS
FOR %%x in ( C:\Users\print_test2\print_%mm%_%yy%\*.pdf) DO (
findstr "%%~nxx" C:\Users\print_test2\print_%mm%_%yy%\printed_%mm%_%dd%_%yy%.txt
@ECHO Error level = %errorlevel%
@ECHO %%~nxx
IF NOT %errorlevel% == 0 (
rem PRINT FUNCTION
@echo %%~nxx >> C:\Users\print_test2\print_%mm%_%yy%\printed_%mm%_%dd%_%yy%.txt
)
)
的文本文件产生不正确。我的想法是,我可以通过print_test2/print_%mm%_%yy%目录中可用的文件遍历通过ftp接收的所有文件并将其记录到文本文件中。
当我尝试在文本文件中有文件名时再次运行脚本时,问题就变得很明显。我期望findstr函数返回%errorlevel%为0,但它不检测文本文件中的字符串,并在我上传和打印的文本文件中再次附加所有文件名。
是否有更好的方式记录收到的文件并只打印一次pdf?
感谢
花了一些时间与此循环,并不知道发生了什么事情。这完全解决了我的错误。谢谢你的帮助Aacini。 – Alex 2012-03-14 19:18:20