ftp自动下载
① 由bat批处理做成的ftp自动下载,怎么才能不自动覆盖
。用其它软件建的FTP服务器我没用过,不清楚dir命令返回结果的的格式。有问题可以Hi。
大体的工作流程是这样。首先远程文件夹列表是空的,写入一行“/”(远程根文件夹)。然后开始循环。第n次循环,获取运程文件夹列表第n行文件夹内的子文件夹和文件的列表,处理获取的这个列表,把列表里的子文件夹加入远程文件夹列表,把列表里的文件下载下来。一直循环,直到最后远程文件夹列表第n行为空。
如果不需要保存文件夹结构,可以用 lanny119 的方法,用mget命令下载全部文件。
rem setlocal批处理中所作的环境更改只影响本批处理。前面加@的作用,不显示此行命令本身
@setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
rem 显示命令本身 关
@echo off
rem 填ftp服务器地址或域名
set ftpsvr=
rem 填用户名
set user=
rem 填密码
set pass=
rem 填保存备份的文件夹
set archdir=D:\backup
rem 填WinRAR安装文件夹,如:C:\Program Files\WinRAR
set rardir=
rem 把要使用的临时文件夹的路径设为环境变量mytemp
set mytemp=%temp%\ftp.x
rem 防止可能的同名文件夹或文件存在影响工作,全删一遍。>nul不显示回显 2>nul不显示错误信息
rd /s /q "%mytemp%">nul 2>nul
del /a /f "%mytemp%">nul 2>nul
md "%mytemp%"
rem 把一个斜杠写到%mytemp%\rdl里面。斜杠表示远程的根文件夹。rdl用作保存远程文件夹列表。
echo />"%mytemp%\rdl"
rem 已下载文件的远程文件夹计数
set dcount=0
rem 标号 cycle
:cycle
rem 获取远程文件夹内的文件和子文件夹列表。
rem 因为下面那个for要被执行多次,非第一次执行要跳过已处理的行,所以要写skip=n。
rem 但是,第一次执行时,写个skip=0出错。所以第一次执行时不写ship= 。
if %dcount%==0 set oo=
if not %dcount%==0 set oo=^ skip=%dcount%
rem 跳过指定的行数,每次从rdl文件中取一行赋给%%I。
for /f "tokens=*%oo%" %%I in (%mytemp%\rdl) do (
rem 为ftp准备命令文件(获取文件列表用)。第一行用的>替换ftpcmd文件的内容,>>追加。
echo open %ftpsvr%>"%mytemp%\ftpcmd"
echo %user%>>"%mytemp%\ftpcmd"
echo %pass%>>"%mytemp%\ftpcmd"
rem 写入的内容为更改远程工作目录为for语句取到的目录。
echo cd "%%I">>"%mytemp%\ftpcmd"
rem 写入的内容为获取远程工作目录里的文件和子文件夹列表,保存到dir文件。
echo dir -a "%mytemp%\dir">>"%mytemp%\ftpcmd"
echo bye>>"%mytemp%\ftpcmd"
rem 以指定命令文件的方式执行ftp语句。回显内容太多,不显示。
ftp -s:"%mytemp%\ftpcmd">nul
rem 下面是处理获取的dir文件及准备命令文件(下载文件用)。
echo open %ftpsvr%>"%mytemp%\ftpcmd"
echo %user%>>"%mytemp%\ftpcmd"
echo %pass%>>"%mytemp%\ftpcmd"
echo cd "%%I">>"%mytemp%\ftpcmd"
set ff=
rem 每次从dir文件中取一行的第三段和第三段后面所有的(tokens=3*)。
for /f "tokens=3*" %%K in (%mytemp%\dir) do (
rem 如果第三段等于<DIR>,是文件夹,加入rdl。<和>不加^为输入输出重定向符号。
rem %%L为第四段,如果还有更多部分,MN…类推。
if %%K==^<DIR^> echo %%I%%L/>>"%mytemp%\rdl"
rem 是文件,加入命令文件准备下载。
if not %%K==^<DIR^> (
echo recv "%%L">>"%mytemp%\ftpcmd"
rem 显示要下载的文件。
echo 下载 %%I%%L ···
set ff=1
)
)
rem 用环境变量的字符串替换功能把斜杠替换成Win的反斜杠。
set ss=%%I
set ss=!ss:/=\!
rem 在临时文件夹里建立对应文件夹。
md "%mytemp%\root!ss!"
rem !为环境变量延迟扩充符号,不在语句块被执行时扩充,而是延迟到本条语句被执行时扩充。
rem 有文件要下载才执行里面的。
if !ff!==1 (
echo bye>>"%mytemp%\ftpcmd"
rem 更改本地目录到对应文件夹。
cd /d "%mytemp%\root!ss!"
ftp -s:"%mytemp%\ftpcmd">nul
)
rem 处理完一个文件夹,计数加一。
set /a dcount=!dcount!+1
)
rem 前面for语句读入rdl并处理,在处理中rdl又可能有行被加入。
rem 如果计数没变化,说明rdl中没有要处理的行了,转到标号compress。
if "%dcount%"=="%lstdcount%" goto :compress
rem 没转走就记录计数,转到标号cycle。
set lstdcount=%dcount%
goto :cycle
:compress
echo 压缩已下载的文件···
rem 子命令a,添加文件到压缩文件。开关-ep1,压缩文件中文件不带源文件基本路径。
rem 开关-o+,覆盖开。开关-r,包含子文件夹。开关-agYYYYMMDD,日期作为存档文件名。
"%rardir%\rar.exe" a -ep1 -o+ -r -agYYYYMMDD "%archdir%\" "%mytemp%\root\*">nul
cd "%temp%"
rem 删除临时文件夹。
rd /s /q "%mytemp%"
本地WinXP简体中文,远程IIS,通过。
这样可以保存文件夹结构。不足是太复杂,不能下载隐藏文件。不知道有没有简单的方法及下载隐藏文件的方法。
② 怎么用filezilla自动下载FTP文件
你要知道服务器的IP还有服务器的FTP账号和密码。然后打开filezilla,点击连接ftp的按钮,输入服务器Ip、ftp账号和密码,点击连接就连接到服务器了。然后你看你要下载那些文件,直接点一下他们,然后拖到左边的本地窗口里,就会自动下载下来了。
③ 请教高手,用批处理命令FTP自动下载文件。
① 如果我理解没错,远端目录,最深层的那个子目录(名称是日期)的那个,每天都是变的;你要下载的是里面的文件(不含子目录);文件下载到本地E:dzyl下,而且目录也是按服务器上的日期创建。
② 批处理固定每天运行,从服务器前一天的目录下载文件。
如果理解正确,那么下面的代码可以实现(已测试过),ip地址你需要修改!你的操作系统如果是英文,也需呀修改(具体看脚本中的提示)
@echooff&
set"ftp_site=19.6.5.34"
set"ftp_id=pracq"
set"ftp_pwd=123456"
set"ftp_remote_dir=/ftp/bos/at/pracq/"
set"ftp_local_dir=E:dzyl"
:100
set"ftpcmd={{%random%}}.ftp"
ifexist%ftpcmd%goto100
::英文系统用下面这个,把下面一行中的::去除
::set"today=%date:~6,4%%date:~0,2%%date:~3,2%"
::中文系统用下面这个,如果是英文,在下面一行句首添加::
set"today=%date:~0,4%%date:~5,2%%date:~8,2%"
settoday=!today:~0,4!-!today:~4,2!-!today:~-2!
call:Date2Day!today!1Yesterday
setftp_remote_dir=!ftp_remote_dir!!yesterday!
>%ftpcmd%echoopen!ftp_site!
>>%ftpcmd%echo!ftp_id!
>>%ftpcmd%echo!ftp_pwd!
>>%ftpcmd%echocd!ftp_remote_dir!
>>%ftpcmd%echobye
for/f%%iin('ftp-s:%ftpcmd%')doif{%%i}=={550}(
!
gotoend
)
setftp_local_dir=!ftp_local_dir!!yesterday!
md!ftp_local_dir!1>nul2>&1
ifnotexist!ftp_local_dir!(
!
gotoend
)
>%ftpcmd%echoopen!ftp_site!
>>%ftpcmd%echo!ftp_id!
>>%ftpcmd%echo!ftp_pwd!
>>%ftpcmd%echocd!ftp_remote_dir!
>>%ftpcmd%echolcd!ftp_local_dir!
>>%ftpcmd%echobinary
>>%ftpcmd%echopromptn
>>%ftpcmd%echomget*.*
>>%ftpcmd%echobye
set/acount=0
for/f%%iin('ftp-s:%ftpcmd%')do(
if{%%i}=={226}set/acount=!count%+1
)
if!count!gtr0(
echoDone.!count!file^(s^)downloaded.
)else(
echoNofilehasbeendownloaded.
)
gotoend
:Date2Day
::call:Date2Day2007-11-122Day
@echooff&setlocal
for/f"tokens=1-3delims=/-:,"%%ain('echo/%~1')do(
set/ayy=%%a,mm=100%%b%%100,dd=100%%c%%100
)
set/az=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set/aj=j/5+dd+y*365+y/4-y/100+y/400-2472633
set/ai=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set/ad=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set/add=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if%mm%LSS10setmm=0%mm%)&(if%dd%LSS10setdd=0%dd%)
endlocal&set%~3=%yy%%f%%mm%%f%%dd%&
goto:eof
:end
ifexist%ftpcmd%(typenul>%ftpcmd%&&del/f/q%ftpcmd%1>nul2>&1)
endlocal&@echoon
测试运行结果:
Done.5file(s)downloaded.
④ 如何打开一个ftp链接后直接下载文件
在管理界面设置文件访问权限
⑤ 自己做BAT脚本 通过FTP服务器自动下载或上传到本机电脑 公司里面用的研究了很久
1. ftp.tmp 是用命令产生的一个ftp命令文本,这个文本在运行ftp命令之后会自动运行。
ftp.tmp 的内容是
open 192.168.10.10
bak
bak
mget * (这句就是下载所有文件)
bye
2. 要达到你上传d:/1.txt,把批处理内容改为
@echo off
@echo xp的任务开始le...................
echo open 192.168.10.10>>ftp.tmp
echo bak>>ftp.tmp
echo bak>>ftp.tmp
echo put d:/1.txt>>ftp.tmp
echo bye>>ftp.tmp
ftp -i -s:ftp.tmp
del ftp.tmp
@echo 搞定收工。
@echo on
还有问题Q 7841983
⑥ ftp如何实现自动下载
CuteFTP
下载:http://www.mydown.com/soft/29/29512.html
汉化:http://www.mydown.com/soft/202/202959.html
使用方法
双击桌面上的CuteFTP快捷图标,启动CuteFTP程序。第一卧诵谢嶙远��鲵TP Site Manager(FTP网站管理者)的对话框,如图1所示,后面再详细介绍。先点“Exit”退出。回到主程序界面进行必要的设置。
程序主界面
主界面分为四个主要部分,如图2所示。
1.命令区域(工具栏和菜单):这是FTP站对使用者显示的信息区,由这里可了解到该站信息,是否支持续传,正在传送什么文件,是否已经断线等当前连接状况。
常用的CuteFTP功能按钮(如图3所示)介绍如下:
A:Site Manager--调用FTP Site Manager;
B:Quick Connect--快速连接。对于一个新的FTP站,可以连上看看,如符合需要,点击Session / Add to database,取一个站名,便可将它加入 “FTP Site Manager”中进行详细编辑设置;
C:Disconnect--中断连接;
D:Reconnect--重新连接;
E:Upload--上传文件;
F:Download--下载文件;
G:Short Directory Listing--只列出文件及目录名称;
H:Long Directory Listing--完整列出文件及目录的详细资料,这样可以在传完文件后,比较本地硬盘的文件大小与FTP站上的文件大小是否一致。如果不一致,则要续传完整才行;
I、J、K:批处理功能组合键; L:View--检视功能,只是用于文本文件;
M:Execute--执行文件。但不要轻易对FTP站中的文件进行执行操作,这样会影响速度。 N:Edit--编辑远程区域中的文件;
O:Rename Files--对文件重新命名;
P:Make new directory--建立新目录;
Q:Refresh--刷新。重新整理当前目录中的文件,在比较文件大小前,最好先刷新一下;
R:Stop--立即中断文件传输。
2.本地区域(本地硬盘):显示本地计算机的硬盘中要上传(Upload)或下载(Download)的所在目录及相关文件。
3.远程区域(远端服务器):显示FTP站的内容。
4.批处理、记录区域:观看文件传输的进程。可先把本地或远程区域中的需要文件拖到这个窗口中,再决定是否传输。
设 置 篇
选择下拉菜单的FTP项,选Settings / Options,出现一个有五个标签的对话框。
1.“General”标签(如图4所示):
Mail Address:填入你的E-mail账号,用作匿名登录FTP站时的password。
Default Download Directory:预设下载文件存放目录,如单独创建一个目录,会便于整理。
Text Files Viewer:文本文件的检视工具。默认打开程序为“记事本”,也可以点击右边的“…”按钮,选择其他文本编辑软件。
Log File:记录传送文件的过程资料。
Max safe index size:Index是指站点说明文件。这里设定index文件大小如果超过指定KB(预设10KB),即询问是否下载。
Default Retry:设定如果因为FTP站忙而没接上,程序会自动连接n次,预设值为20。 Start:启动CuteFTP后使用哪种模式。预设为Site Manager(建议使用模式);
Quick Connect为快速连接;Nothing是直接进入CuteFTP的主程序工作窗口。
2.“Advanced”标签(如图5所示)。
Double-click Action:设定双击鼠标左键执行什么命令。预设为Transfer,即开始传输文件(建议);
Execute是执行文件(最好别用,除非你很有把握不会出错);View是查看文件,只对文本文件有效;Nothing是什么都不执行。
“Receive”和“Sand”是指接收缓冲区和传送缓冲区的大小。如果在传输文件时非常缓慢,不妨试试把两项都加大到16000。
3.“Display”标签(如图6所示)。
Tool Bar: 选择“Big Buttons”会使用大的功能键,这样看上去会醒目很多,不容易点错,这项功能很体贴常在网上泡得头晕眼花的虫虫们。
Customize:可以像Office97一样任意增减功能键,排列成自己习惯的菜单。 Select Font:设定显示字形的样式及大小。
Colors:显示讯息及字形颜色。 Reset to defaults:恢复默认的设定值。
4.“Prompts”和“Firewall”标签(如图7、图8所示): 关于操作提示和防火墙的设定,普通用户使用预设值就行了。
使 用 篇
单击按钮,开启FTP Site Manager。CuteFTP收集了很多着名的FTP站点地址,用鼠标在“Anonymous FTP Sites”文件夹中选择你想连接的站点,单击“Connect”即可连接了。如果想新增一个FTP站点,则单击“Add Site”,会弹出如图9所示的对话框。
1.Site Label:任意填写站名,它起到一个标题作用。如填上笔者的“红帆船电脑网络工作室”。
2.Host Address:填入FTP服务器的IP地址或域名,例如免费主页在太阳城,就要填上它的IP地址:202.98.35.14。注意不要用ftp://或http://开头。
3.User ID:填写你的用户名,Password中填写密码。
4.Login type(登录类型):选择“Normal”(正常)。很多公用的FTP网站,选用“anonymous”(匿名)登录,用自己的信箱账号当password即可。
5.Initial Remote Directory:填上你想登录FTP服务器后直接进入那级目录,如果上传个人主页,一般是用“\你的用户名”路径;Initial Local Directory:填上你想传输的文件在自己硬盘中的目录,当然不填也可以。
6.Transfer type:文件上传模式设定。 FTP可以用多种格式传输文件,常用的是文本模式和二进制模式。文本传输使用ASCII字符,而二进制则无须转换或格式化即可传输字符,因此比文本模式更快,并且可以传输所有ASCII值。要注意确保使用正确的传输模式传输文件,按文本模式传二进制文件将会导致错误。一般我们选“Auto-Detect”即可,它会自行检测文件类型并使用最适合的上传方式。
7.点击“确认”,程序回到图10的界面,此时“红帆船电脑网络工作室”已经出现在右边的框中。选择此标题,单击“Connect”,即可连入服务器(前提当然是你的电脑处于在线状态,如果不在线,CuteFTP会自动调用联接上网的程序)。远端服务器“验身”之后,弹出对话框(如图10所示),单击“OK”,进入程序主界面,便可以传送文件了。
六、如何上传、下载文件
1.在本地硬盘选取一个或多个要上传的文件,在远程区域中进入欲将文件送至的目录。 单击工具栏上的上传图标,或者用鼠标直接将选取文件拖曳过去,文件便开始上传。当命令区域中提示DONE,即表示上传完毕。
2.当遇到只需要上传所有jpg文件等情况时,可以在菜单中选取“Directory/Group select”,在弹出的对话框中输入想选取的文件通配符,如图11所示。该功能支持文件通配符“*”和“?”的用法。
3.CuteFTP2.8支持整个目录的上传或下载,操作方法与传送单一文件是一样的。但有时网站需要增加目录,可选择菜单中的“Commands / Make new directory”,或单击鼠标右键点选“Make new directory”项。在弹出的对话框中输入新目录名即可。如图12所示。
下载文件与此相似。
传送文件时,会经常在本地区域或远程区域中点击鼠标右键,弹出常用操作的功能菜单:
Delete:删除被选中的文件;
Rename:对被选中的文件重命名;
Change file attributes:修改远程区域中被选中的文件属性。这一项对于CGI文件很重要。点击此项,将弹出如图13所示的对话框,具体设置方法可参考帮助文件。
Make new dir:建立文件夹(目录);
Refresh:刷新。
技 巧 篇
1.注意文件名称的大小写。因为大多数远程服务器,对于文件或目录名的大小写非常敏感。如果FTP软件中没有强制小写字母的功能,就要注意文件及目录名要用小写。在CuteFTP中,在FTP Site Manager / Edit Site / Advanced的Upload Filenames中选择Force Lowercase(强制小写),可以强制实现上传文件名称为小写。如图14所示。
2.正确设置本地及远程目录。在CuteFTP中设置好本地及远程目录的路径,登录后将自动进入指定目录中,就马上可以进行文件传送了,能节省很多切换目录的时间。注意本地目录路径是用“\”格式,而在远程目录路径使用的是“/”格式,因为大部分的服务器都是UNIX系统。对于常用的目录,应将它加到Bookmarks书签中。
3.进入某站点时候盯着注意信息窗,如果显示了“This site can resume broken downloads”,即表示支持续传功能。
4.CuteFTP的目录下的smdata.dat文件,记录了“FTP Site Manager”中各网站的信息,应该定期备份。如果“FTP Site Manager”损失,或者重装了CuteFTP,将此文件复制回去,就不用再编辑一大堆的FTP站了。此外还应备份四个重要的文件:cuteftp.key、 commands.dat、 bookmark.dat、 autoname.dat。
5.传送文件结束后,在FTP Site Manager中,不要将Password保留,容易被别人利用。
6.CuteFTP是共享软件,有很多功能需要注册才能使用。
7.CuteFTP 2.8已经解决了Y2K问题,但注意不要将系统日期设定到2037年之后。
8.如果CuteFTP一切设置正常,但传输文件还是非常慢或者只能传输部分文件便停止,请在Windows的system.ini中加上[VNTSPSD]MaxFrameSize=3D1000,然后重启计算机。或到下列站点下载系统修正程序: http://www.sns-access.com/~netpro/maxmtu.htm http://www.microsoft.com/windows95/info/krnlupd.htm
8、可按如下步骤显示远程区域的隐含目录:在FTP Site Manager选Edit site编辑某个站点。在“Remote Directory”项中输入“-rtaF”,并且不要复选“Local Filter”项。
⑦ FTP自动下载的问题
下载所有文件要用到mget *.* 可以自己试下,或者建议你用现成的软件来下载,比如second ,可以自动定时同步本地与ftp,比bat要方便也好用的多。
⑧ 我想让迅雷(或者其他常用软件)定时自动下载一个ftp资源文件
定时的话windows的任务计划可以,在控制面板--任务计划--添加任务计划--下一步,选中启动迅雷的图标(没有就通过浏览找)--下一步,选择执行任务的方式,可以每天都运行,也可以就一次运行,随你高兴了--下一步,选择运行时间--下一步,输入管理员密码,没有就空着。--下一步完成。别忘了在迅雷里配置--常规--选中迅雷启动后,立即开始未完成的下载。还有选迅雷的完成后关机,下完就自己关机了。
⑨ 批处理实现FTP自动下载完后清理源文件
前面每3分钟检查有无新文件,然后下载到本地并删除,这个可以用批处理实现,后面弹出消息框这个就需要vbs来做了,你确定后面这个功能有必要?如果需要实现,那么就会增加代码复杂度与文件读写操作,而且每3分钟弹出一个窗口,如果不手动去关,程序就会卡在那里。
⑩ 求linux系统ftp自动下载文件的代码,超时重连
有开源的软件,FileZilla,官网https://filezilla-project.org/,client和server端的都有,你可以下载下来参考。