0

私はこのサイトを検索を使って見つけました。これは大きな助けになりました。以前のソリューションの一部を変更して必要なことを行うことができましたが、それでも助けが必要です。私はこれをバッチファイルで行う必要があり、1つか2つの解決策を得ることを望んでいました。

私がする必要があるのは私のPCから複数のFTPサーバーに1から10のzipファイルを転送することです。次に、それらが正常に転送されたことを確認する必要があります。私のPCでは通常のMSFTPを使用しており、サーバーはIndiFTPDを使用しています。チェック部分以外は全部やりました。一部のFTPサーバーはダイヤルアップおよびワイヤレスであり、時々切断されます。したがって、たとえば3つのファイルを転送していて、最初のファイルは失敗したが、他の2つのファイルは成功した場合、スクリプトはそれを成功としてリストします。

転送フォルダーにあるzipファイルの数を取得し、それを変数に入れることができました。そのためのコードは次のとおりです。

@echo off


for /f %%A in ('dir *.zip ^| find "File(s)"') do set cnt=%%A
echo Zip File count = %cnt%

私が問題を抱えているのは、FTP転送のテキストログファイルから同じ情報を取得し、2つを比較して同じであることを確認することです。これが私が作るFTP転送のログの例です:

ftp> Connected to Host1.
open Host1 21 
220 Connected to IndiFTPD
ftp> Username user 
user1
331 Password required for Folder1.

230 User user1 logged in.
ftp> Hash mark printing On  ftp: (2048 bytes/hash mark) .
ftp> hash 
binary 
200 Type is set to I.
ftp> mput *.zip 
200 PORT command successful.
150 Opening BINARY mode data connection for 2012_07_01_03_40_1_3_TESTFTPs.zip.
###############################################################################################
226 [Bytes: 195046][Time: 1.13 s][Speed: 168.26 K/s]
ftp: 195046 bytes sent in Seconds Kbytes/sec.
0.78251.67200 PORT command successful.
150 Opening BINARY mode data connection for 2012_07_01_03_40_2_3_TESTFTPs.zip.
###############################################################################################
226 [Bytes: 195046][Time: 1.13 s][Speed: 168.41 K/s]
ftp: 195046 bytes sent in Seconds Kbytes/sec.
0.77253.31200 PORT command successful.
150 Opening BINARY mode data connection for 2012_07_01_03_40_3_3_TESTFTPs.zip.
###############################################################################################
226 [Bytes: 195046][Time: 1.14 s][Speed: 166.79 K/s]
ftp: 195046 bytes sent in Seconds Kbytes/sec.
ftp> 0.78249.42bye 
221 Exit.

%cnt%スクリプトの最初の部分の変数を使用して、所有しているzipファイルの数を取得できるようにしたいと思います。次に、terminal-ftp.txtという名前のログファイル内の「226[バイト」」の数をカウントできるようにしたいと思います。次に、両方の値が可変形式になったら、それらを比較して、3つのFTPファイルと3つの成功した226転送があることを確認する必要があります。それらが一致しない場合は、再試行のためにフラグを立てる必要があります。

4

1 に答える 1

1

226 件の結果を取得します。

for /f "usebackq tokens=3 delims=: " %%A in (`find /c "226 [Bytes" "terminal-ftp.txt"`) do set "xTTS=%%A"
echo Successful 226 Transfers = %xTTS%

結果を比較します。

if "%xTTS%" EQU "%cnt%" echo The counts match
if "%xTTS%" NEQ "%cnt%" echo The counts do not match

優れたバッチ リファレンスの場合:

command /?TechnetRob van de WoudeDosTips、およびSS64

于 2012-12-19T20:53:02.277 に答える