0

我通过搜索找到了这个网站,这对我很有帮助。我能够修改以前解决方案的一部分来做我需要的,但我仍然需要一些帮助。我需要在批处理文件中执行此操作,并希望获得一两个解决方案。

我需要做的是将 1 到 10 个 zip 文件从我的 PC 传输到多个 FTP 服务器。然后我需要检查以确保它们已成功转移。在我的 PC 上,我使用的是常规的 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 传输。如果它们不匹配,那么我需要将其标记为重试。

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 /?, Technet, Rob van de Woude, DosTips, 和SS64

于 2012-12-19T20:53:02.277 回答