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

Variables 我需要计算一个文件夹中有多少.zip文件并将其传输到一个变量。然后与txt日志文件中成功的226次传输进行比较,variables,ftp,batch-file,Variables,Ftp,Batch File,我发现这个网站使用搜索,这是一个很大的帮助。我能够修改以前的解决方案的一部分来做我需要的事情,但我仍然需要一些帮助。我需要在批处理文件中执行此操作,并希望得到一两个解决方案 我需要做的是将1到10个zip文件从我的电脑传输到多个FTP服务器。然后我需要检查以确保他们成功转移。在我的电脑上,我使用常规的MS FTP,服务器使用IndiFTPD。除了检查部分,我什么都做了。一些FTP服务器是拨号和无线的,它们会不时断开连接。因此,如果我传输3个文件,第一个失败,但其他两个成功,我的脚本将其列为成功

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

我需要做的是将1到10个zip文件从我的电脑传输到多个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[字节]数。然后,一旦我以变量形式获得这两个值,我需要对它们进行比较,以确保我有3个ftp文件和3个成功的226次传输。如果它们不匹配,我需要将其标记为重试。

获取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/?
、和

+1-回答不错,但有一点小评论。我一直不明白为什么很多人在不需要时使用
“usebackq”
。可以删除该选项,并在in()子句中使用常规单引号,而不是反引号。这是我唯一一次使用“usebackq”`选项是在读取文件时必须引用名称。@dbenham谢谢,我倾向于使用
usebackq
选项,只是因为我更喜欢它。我喜欢所有选项都被一种形式的引号包围,我喜欢filenameset总是起作用(不仅仅是当它不包含空格时),我喜欢在我的代码中使用单for循环样式,以减少混淆(只需记住3 for循环类型而不是6 for循环类型)。因此,这不是出于必要,而是出于个人观点,它更好。:)经过深思熟虑的响应。我开始走同样的路,但从字符串读取阻止我始终使用
“usebackq”
。我几乎总是希望字符串被引用,这样我就不必担心转义特殊字符。另外,我不喜欢不必要的键入:)所以我的风格是在读取文件时通常使用
“usebackq”
,而“从不”将其用于字符串或命令。我知道这与我的第一条措辞拙劣的评论相矛盾。我真的应该说“我唯一觉得有必要选择的时间是…”而不是“我唯一使用它的时间是…”。干杯:)