我需要计算文件夹中有多少.zip文件并转移到变量。然后与txt日志文件中成功的226次传输进行比较

时间:2012-12-19 20:37:24

标签: variables ftp batch-file

我发现这个网站使用的是一个很好的帮助。我能够修改以前的解决方案的一部分来做我需要的但我还需要一些帮助。我需要在批处理文件中执行此操作,并希望获得一两个解决方案。

我需要做的是将1到10个zip文件从我的PC传输到多个FTP服务器。然后我需要检查以确保它们已成功传输。在我的电脑上,我使用常规的MS FTP,服务器正在使用IndiFTPD。除了检查部分我完成了所有工作。某些FTP服务器是拨号和无线的,它们会不时断开连接。因此,如果我正在传输说3个文件而第一个文件失败但其他两个文件成功,我的脚本会将其列为成功。

我能够计算出传输文件夹中有多少个zip文件并将其放入变量中。代码是:

@echo off


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

我遇到的问题是从FTP传输的文本日志文件中获取相同的信息,然后比较两者以确保它们是相同的。以下是我将进行的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 [Bytes”的数量。然后,一旦我将两个值都变量形式,我需要比较它们以确保我有3个FTP文件和3个成功的226传输。如果它们不匹配,那么我需要将其标记为重试。

1 个答案:

答案 0 :(得分: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 WoudeDosTipsSS64