需求:windows服务器数据库每天备份,备份后自动传输至FTP服务器中
安装FTP客户端做定时传输任务,也可以完成此工作,不过在服务器上不想多安装软件,FTP客户端有时会关掉,导致任务不能正常进行,所以写批处理文件,做系统计划任务来完成此工作。
批处理脚本如下
@echo off ### 关闭回显
set ftpname=autoftp.ftp #####设定ftpname变量
echo ========================================== >> d:\ftpput\log
date /t >> d:\ftpput\log ######将时间追加到log中
time /t >> d:\ftpput\log
date /t >> d:\ftpput\log ######将时间追加到log中
time /t >> d:\ftpput\log
echo open 192.168.251.8 >"%ftpname%" #####向ftpname变量中echo 打开ftp地址的命令
echo user user1 passwd >>"%ftpname%" ######向ftpname变量中echo 用户和密码
echo bin >>"%ftpname%" ####### 向ftpname变量中echo 二进制传输
echo prompt >>"%ftpname%" #######向ftpname变量中echo 关闭交互模式
echo cd /yanf >> "%ftpname%" #######向ftpname变量中echo 打开ftp中的yanf文件夹
echo lcd d:\ora_bak\data >>"%ftpname%" #######向ftpname变量中echo 打开本地文件夹命令
echo put yanf_"%date:~0,10%".dmp>>"%ftpname%" ####### 向ftpname变量中echo 上传指定文件
echo bye >>"%ftpname%" #######向ftpname变量中echo 退出ftp命令
ftp -n -s:"%ftpname%" >> d:\ftpput\log ##### 执行ftp文件,执行上述追加的命令,并将过程写入log中
del "%ftpname%" ###### 删除之前追加的autoftp.ftp文件
经测试已经在生产环境中应用
上述脚本值得注意几点
DOS批处理中用%%引用变量
%date:~0,10% 表示date系统变量的时间值 0,10% 0表示从左删除的字符 ,10表示从左到右保留10字符
使用ftp -n及-s禁用ftp交互