需求: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
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交互
02-02 05:39