1. 首先是执行的主脚本
echo off
rem 配置文件目录
set cfgDir=%cd%\cfg
set binDir=%cd%\bin
set bakInI=%cfgDir%\bakLabel.ini
if not exist %bakInI% goto NOOK
rem 按照时间建立当天的目录
set currDate=%date:~,4%%date:~5,2%%date:~8,2%
md backup\%currDate%
for /f "tokens=1,2 delims=," %%i in (%bakInI%) do (
rem 调用ftp备份
call %binDir%\process %%i %cfgDir% %currDate%
)
goto :eof
:NOOK
echo 配置文件不正确
exit
2. 然后是真正处理批量ftp的脚本
@echo off
rem 本地备份根目录
set homedir=%2
set backdir=%2\..\backup\%3
if not exist %homedir% goto :NODIR
if not exist %backdir% goto :NODIR
rem 常量声明
set user=USER
set pwd=PWD
set host=HOST
set dir=DIR
set tag=*
set end=END
rem 配置文件
set path=%1
set cfgFile=%homedir%\%path%.cfg
if not exist %cfgFile% goto NOFILE
rem 执行计划
set planFile=%homedir%\exe.plan
setlocal enabledelayedexpansion
for /f "delims== tokens=1,2,3" %%i in (%cfgFile%) do (
if %%i==%host% (echo open %%j>%planFile%)
if %%i==%user% (echo %%j>>%planFile%)
if %%i==%pwd% (echo %%j>>%planFile%)
if %%i==%dir% (echo cd %%j>>%planFile% )
if %%i==%tag% (echo get %%j>>%planFile% )
)
echo bye>>%planFile%
rem 哈哈哈哈哈哈
set sysBinRoot=%SystemRoot%\System32
pushd %backdir%
%sysBinRoot%\ftp -i -s:%planFile%
popd
del %planFile%
goto :eof
rem 配置文件不存在不能远程取文件
:NOFILE
echo 配置文件"%1"不存在,请查证
pause
exit
:NODIR
echo 目录不正确
pause
exit
3. 对于配置文件,有两个。一个是总的主机配置列表,另一个是详细的文件和主机路径的配置信息。
比如主机配置列表中有内容:main, 那么回对应的有另一个配置文件 main.cfg.其中main.cfg的配置内容如下:
START
HOST=主机ip
USER=主机用户
PWD=主机密码
DIR=第一个目录
*=文件1
*=文件2
...
DIR=第二个目录
*=文件1
......
DIR=第三个目录
*=文件1
END