中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » (新人)求批处理下载FTP服务器上文件的方法
作者:
标题: (新人)求批处理下载FTP服务器上文件的方法 上一主题 | 下一主题
laoniu521
新手上路





积分 8
发帖 2
注册 2006-6-20
状态 离线
『楼 主』:  (新人)求批处理下载FTP服务器上文件的方法

如题!请高手们来帮忙。

2007-12-14 11:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zerocq
中级用户




积分 458
发帖 196
注册 2006-10-5
状态 离线
『第 2 楼』:  

echo open ftp地址>z.txt
echo 用户>>z.txt
echo 密码>>z.txt
echo get 文件>>z.txt
echo bye>>z.txt
ftp -s:z.txt

2007-12-14 12:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jamiyang
初级用户





积分 26
发帖 12
注册 2007-12-31
状态 离线
『第 3 楼』:  

不错

2008-2-3 17:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qq43142691
中级用户





积分 327
发帖 152
注册 2007-5-4
状态 离线
『第 4 楼』:  


@echo off&setlocal enableextensions&&setlocal enabledelayedexpansion&color 0a&set n=0
title ^|彬^|℡ 数据FTP备份工具℡ 更新日期:20087/01/25 QQ43142691
::**********************请按自己实际修改******************************
set ftp地址=
::默认FTP端口为21,请根据实际修改端口
set ftp端口=21
set ftp帐号=
set ftp密码=
::日志文件路径默认为c:\备份日志.log你可以指定为其他路径比如d:\log\日志 .log
set 日志=
::网维大师需要备份的数据路径是 c:\program files\icafe8\nbms\barserver
set 本地备份=E:\批处理\08年1月
set 备份位置=d:\backup
::网维大师需要备份到FTP的数据路径是 c:\program files\icafe8\nbms\barserver\data
set FTP备份=E:\批处理\08年1月
::这里应该填入 星期一 星期二 星期三 星期四 星期五 星期六 星期日
set 上传周期=星期三
::***********************************************************************************
::*******************下面为固定变量,勿动*****************************
set ftpbakname=批处理备份
set 时间=%date:~0,-10%年%date:~5,2%月%date:~8,2%日%date:~-3%
set 时=%time:~0,2%
set 分=%time:~3,2%
set 秒=%time:~6,2%
set/a 凌晨=0,上午=5,下午=14,晚上=18
for %%i in (凌晨 上午 下午 晚上) do if %时% gtr !%%i! set 时段=%%i
set 上传信息=put
set ftplog=ftplog.log
set 数据名称=%时间%备份.rar
set 配置数据文件=%时间%备份配置数据文件.rar
set msg1=(%programfiles%)目录下没有rar工具
set bk1=本地备份
set bk2=FTP备份
set msg2=(%本地备份%)路径不存在
set msg3=网络不通导致无法上传到(%ftp地址%的%ftp端口%端口)指定地址
set msg4=(%FTP备份%)成功压缩并且成功上传至(%ftp地址%的%ftp端口%端口)ftp服务器
set msg6=非法ip地址,请检查ip地址的格式是否正确[暂不支持域名格式]
set msg7=帐号或者密码错误
set msg8=未执行请求的操作,系统存储空间不足
set msg9=远程FTP服务器%FTP地址%当前连接用户过多,无法接受新的连接
set msg10=还没有到指定上传周期%上传周期%所以取消上传,但是也有备份到%备份位置%目录下
::************************************************************************
if "%日志%"=="" set 日志位置=c:\备份日志.log
if not "%日志%"=="" set 日志位置=%日志%
::1
set/a n+=1
if not exist "rar.exe" set msg=%msg1% &call :amsg & exit
::2
set/a n+=1
if not exist "%本地备份%" set 备份=%bk1%&set msg=%msg2% &call :amsg & exit
::3
set/a n+=1
if not exist "%FTP备份%" set 备份=%bk2%&set msg=%msg2% &call :amsg & exit
if exist "%数据名称%" del /q "%数据名称%"
"rar.exe" a "%数据名称%" "%本地备份%"
move /y "%数据名称%" "%备份位置%"
if exist "%配置数据文件%" del /q "%配置数据文件%"
"rar.exe" a "%配置数据文件%" "%FTP备份%"
::********************************************************************************
::4
set/a n+=1
if not %date:~-3%==%上传周期% set msg=%msg10% &call :amsg &exit
::5
set/a n+=1
if "%ftp地址%"=="" set k=远程ftp(地址)为空&call :lswj&call :amsg &exit
::6
set/a n+=1
echo %ftp地址%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul&&goto ok||set k=%msg6% &call :lswj&call :amsg&exit
:ok
::7
set/a n+=1
set _ftp地址=%ftp地址:.= %
call :check %_ftp地址%
:check
if "%4"=="" goto set "k"="%msg6%"&call :lswj&call :amsg&exit
::8
set/a n+=1
for %%i in (%1 %2 %3 %4) do (
    if %%i gtr 255 set "k"="%msg6%"&call :lswj&call :amsg&exit
)
::9
set/a n+=1
if "%ftp端口%"=="" set k=远程ftp(端口)为空&call :lswj&call :amsg &exit
::10
set/a n+=1
echo %ftp端口%|findstr "^[0-9]*$">nul&&goto id||set k=非法端口,只允许数字)&call :lswj&call :amsg &exit
:id
::11
set/a n+=1
if "%ftp帐号%"=="" set k=登陆ftp(帐号)为空&call :lswj&call :amsg &exit
::12
set/a n+=1
echo %ftp帐号%|findstr "^[0-9,a-z,A-Z]*$">nul&&goto pw||set k=(非法帐号,只允许数字和大小写字母)&call :lswj&call :amsg &exit
:pw
::13
set/a n+=1
if "%ftp密码%"=="" set k=登陆ftp(密码)为空&call :lswj&call :amsg &exit
::14
set/a n+=1
echo %ftp密码%|findstr "^[0-9,a-z,A-Z]*$">nul&&goto pass||set k=(非法密码,只允许数字和大小写字母)&call :lswj&call :amsg &exit
:pass
ping /n 4 %ftp地址%>nul
::15
set/a n+=1
if %errorlevel%==1 set msg=%msg3% &call :amsg & exit
echo %ftp帐号%>"%上传信息%"
echo %ftp密码%>>"%上传信息%"
echo mkdir "%ftpbakname%">>"%上传信息%"
echo cd "%ftpbakname%">>"%上传信息%"
echo bin>>"%上传信息%"
echo delete "%配置数据文件%">>"%上传信息%"
echo put "%配置数据文件%">>"%上传信息%"
echo quit>>"%上传信息%"
ping /n 1 127.1>nul
::16
set/a n+=1
if exist "%ftplog%" del /q "%ftplog%"
cls
for /f "tokens=1" %%q in ('ftp -s:"%上传信息%" %ftp地址% %端口%') do (echo %%q>>"%ftplog%")
find /i "530" "%ftplog%">nul&&goto have530||set msg=%msg4%
:amsg
if exist "%ftplog%" del /q "%上传信息%" "%ftplog%"
echo %时间% %时段%%时%点%分%分%秒%秒>>"%日志位置%"
echo %n%"%msg%">>"%日志位置%"
echo __________________________________________________________________________________________________________>>"%日志位置%"
goto :eof
:lswj
if "%k%"=="%msg6%" goto no5
set msg5=上传失败,%k%,导致无法连接到远程服务器,(%配置数据文件%)已经存放到(%备份位置%)目录下
:no5
move /y "%配置数据文件%" "%备份位置%"&set msg=%msg5%
goto :eof
:have530
set k=%msg7%&call :lswj&call :amsg
goto amsg


2008-2-3 22:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: