使用FTP下载目录,即FTP命令批量自动下载的bat文件
作者 佚名
来源 批处理
浏览
发布时间 2013-07-09
FTP不支持目录的下载,不过FTP命令提供了mget命令,允许多文件下载,但每下载一个文件都需要确认,不能自动完成。本文主要介绍使用批处理,结合FTP的相关命令来实现批量文件的下载,以便达到目录下载的目的。 大致想法如下: ftp-s:filenamehosts>result.txt执行脚本,并将结果定向输出到result.txt 脚本内容,如 cdmydir ls bye 可以将mydir命令列出 然后使用批处理分析result.txt 从150OpeningASCIImodedataconnectionforfilelist.的下一行开始算,直到226Transfercomplete都是要下载的内容 然后用批处理加ftp脚本,使用get命令逐个下载 但实际过程中发现,在FTP脚本中使用get有问题,提示参数错误,无法使用。 查看了ftp的帮助ftp -? G:>ftp-? TransfersfilestoandfromacomputerrunninganFTPserverservice (sometimescalledadaemon).Ftpcanbeusedinteractively. FTP[-v][-d][-i][-n][-g][-s:filename][-a][-w:windowsize][-A][host] -vSuppressesdisplayofremoteserverresponses. -nSuppressesauto-loginuponinitialconnection. -iTurnsoffinteractivepromptingduringmultiplefile transfers. -dEnablesdebugging. -gDisablesfilenameglobbing(seeGLOBcommand). -s:filenameSpecifiesatextfilecontainingFTPcommands;the commandswillautomaticallyrunafterFTPstarts. -aUseanylocalinterfacewhenbindingdataconnection. -Aloginasanonymous. -w:buffersizeOverridesthedefaulttransferbuffersizeof4096. hostSpecifiesthehostnameorIPaddressoftheremote hosttoconnectto. Notes: -mgetandmputcommandstakey/n/qforyes/no/quit. -UseControl-Ctoabortcommands. 发现 -i 参数可以去除mget的提示,经过测试,实现了如下脚本(使用了匿名登入,如果非匿名,可以修改登入脚本): echocdautoruns>ftp.txt echomget*>>ftp.txt echobye>>ftp.txt ftp-i-A-s:ftp.txt10.1.103.10 不过,这只是下载了目录中的文件,如果有子目录,那还需要用dir命令输出,并转向输出到文本,用find来提取目录,如: echocdautoruns>ftp.txt echodir>>ftp.txt echobye>>ftp.txt ftp-A-s:ftp.txt10.1.103.10|find"<DIR>">result.txt for/f"tokens=2,3*"%%iin(result.txt)doecho%%k 如有子文件夹,那就要深入编写了。 经过编写测试,实现如下脚本,运行环境WINXP SP2,运行通过,未载其它系统上测试过: 1、主要脚本ftpget.bat,更改前4个变量的相关信息,该脚本调用makeTree.bat,请参见2 remFTP服务器地址 sethost=10.1.103.10 remFTP登入名,如果匿名不用改 setuser=anonymous remFTP登入密码,如果匿名不用改 setpass=123456 rem需要下载的FTP目录,如果下载子目录以分格 setdirname=目录1子目录 sethomedir=%cd% rem生成FTP目录结构 deltree.txt start/wcmd/cmakeTree%dirname%0 delresult*.txt for/f"delims=/"%%iin(tree.txt)do( rem获取dirname的所有文件 rem============================= cd%homedir% md%%i cd/d%%i echo%user%>ftp.txt echo%pass%>>ftp.txt echocd%%i>>ftp.txt remmget*.*下载所有文件,但不能下载无扩展名的文件; rem如果使用mget*可以下载所有文件,但会把子目录的文件也下载过来 echomget*.*>>ftp.txt echobye>>ftp.txt ftp-i-A-s:ftp.txt%host% delftp.txt rem============================== ) cd%homedir% deltree.txt 2、maketree.bat,生成FTP目录树 rem生成FTP目录结构 rem调用方法maketreedir1dir2n(n>=1) rem%1==dir1dir2 rem%2==n set/atreetime=%2+1 echo%1>>tree.txt echo%user%>ftp%treetime%.txt echo%pass%>>ftp%treetime%.txt echocd%1>>ftp%treetime%.txt echodir>>ftp%treetime%.txt echobye>>ftp%treetime%.txt ftp-A-s:ftp%treetime%.txt%host%|find"<DIR>">result%treetime%.txt for/f"tokens=2,3*"%%iin(result%treetime%.txt)do(start/wcmd/cMaketree.bat%1%%k%treetime%) delresult%treetime%.txt delftp%treetime%.txt
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 计算机/网络设备状态监测脚本 批处理下一篇: wget各种选项分类列表与下载
关于使用FTP下载目录,即FTP命令批量自动下载的bat文件的所有评论