概要
本文主要介绍如何通过Windows批处理脚本和Task Tools的soon.exe程序实现FTP的多文件自动上传,详细的介绍了相应的参数配置。
基本业务需求介绍:
及时将公司业务报文向Edi报文中心发送,Edi中心开放FTP相应目录进行存储报文。
基本思路:
利用dos命令(soon.exe)调用Windows系统的任务计划,间隔3分钟调用一下批处理
程序将本地的文件上传到Edi报文中心。其中用到了soon.exe小程序,该程序在Windows
系统盘的Support目录中可以找到;其次将ftp的上传命令写在一个脚本中进行调用。
适用于:
Windows XP、Windows 2000、Windows2003系统(已测试)
脚本代码说明:
------------第一个文件:StartFtp.bat------------------------------
@echo off
rem ////////////////////////////////////////////////////////////////////////////////////
rem // ivan_wang 2007-2-6 QQ:272022323
rem // use SOON schedules a job to run in the near future,a number of seconds from now.
rem // Command line: SOON [server] 60 [Run batch]
Rem ////////////////////////////////////////////////////////////////////////////////////
c:\AutoFtpUp\soon.exe 180 c:\AutoFtpUp\StartFtp.bat
c:\AutoFtpup\FtpToEdi.bat
---------------------------------------------------------------------------
调用SOON程序,在180(秒)后自动运行StartFtp.bat脚本,目的是将脚本的运行写入到任务计划中,每隔180秒运行一下FtpToEdi.bat,实现自动上传。
--------------第二个文件:FtpToEdi.bat------------------------------
ftp -s:c:\AutoFtpUp\ftp.scr
copy d:\EdiCode\*.* d:\EdiCode_BK\ /y
del d:\EdiCode\*.* /Q
---------------------------------------------------------------------------
调用ftp上传脚本,-s参数是将Ftp.scr脚本中的命令自动调入FTP环境运行。接下来的两句,主要是将本地的EdiCode目录中的文件在上传过后,进行一次备份并清除,以免每次上传时上传重复的文件造成带宽资源的浪费(Edi中心是论KB来算Money的,哈哈)
--------------第三个文件:ftp.scr-----------------------------------
open xxx.xxx.xxx.xxx
user
edi
0808
prompt off
mput d:\EdiCode\*.*
bye
quit
-------------------------------------------------------------------
open [Remote server],Ip地址或Ftp服务器名,接下来是User命令,注意在Windows中这里的User必须单独一行,在下一行是用户名(edi)密码(0808),直接输入即可,前面不要再加user和Pass,接下来的Prompt off比较重要,在Windows中默认Prompt是开启状态,只有设为OFF状态时,使用mput才会传输本地目录下的所有文件,无需用户对每个文件进行确认;mput d:\EdiCode\*.*是将本地目录下的所有文件上传到远程服务器的当前目录,bye是与远程服务器断开连接,Quit是退出FTP环境。关于FTP的详细子命令可以查看Windows的帮助。
对于程序运行的间隔时间可以根据业务需求调整,当然如果你的业务需求非常严格,那么还是开发一个相应的程序比较理想,因为在FTP将现有文件上传到远程服务器,开始备份清空本地目录文件时无法保证此时系统生成的报文的文件不被误删除,但对于数据传输不是异常频繁且要求不是非常苟刻的情况下,该脚本还是很方便的,希望本文能对你有些帮助。