私の手元にある問題は、pdfファイルをダウンロードしてそれらをすべてプリンタに送ることです。バッチ・プリント - バッチ・スクリプト - forループの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
)
)
。私は、ftp経由で受け取ったすべてのファイルに対して、print_test2/print_%mm%_%yy%ディレクトリにあるファイルをループして、テキストファイルに記録できると考えました。
テキストファイルにファイル名が含まれているときにスクリプトをもう一度実行しようとすると、問題が明らかになります。 findstr関数は%errorlevel%を0に戻すことを期待していますが、テキストファイルにある文字列は検出されず、アップロードされたテキストファイルと印刷されたテキストファイルの両方にすべてのファイル名が再度追加されます。
受信したファイルをログに記録し、pdfsを1回だけ印刷するより良い方法はありますか?
おかげ
このforループでしばらく時間を費やし、何が起こっていたのか分からなかった。これは私のエラーを正確に修正しました。助けてくれてありがとうAacini。 – Alex