『第
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
|