您的位置:首页 > 编程语言 > PHP开发

用DOS批处理实现FTP自动上传、下载、清理文件

2011-11-05 16:39 459 查看


用DOS批处理实现FTP自动上传、下载、清理文件
最近好像特别的忙,好久没来写点东西了,今天写了一个利用批处理程序完成FTP自动上传、下载、清理文件的程序。赶紧
记录下来,以备日后之用。

功能介绍:自动登录远程主机,并到指定目录下下载文件,下载完成后,检查下载到本地的文件并删除主机上的文件。

程序名称及功能:

getfile.bat:主程序,检查配置目录及调用ftp脚本。

getfile.ftp:ftp运行脚本。

movefile.bat:删除远程主机上的文件。

以下是批处理的具体内容。
1.getfile.bat内容:

@echo off

REM 配置基本盘符,主目录和文件存放目录

set BASE=d:

set BASE_PATH=D:\doc\一卡通\ftp

set LOG_FILE=%BASE_PATH%\ftpgetfile.log

set FLAG_FILE=%BASE_PATH%\tmp.tmp ##因要和另外一个程序通讯,所以用了这个状态标志文件,程序开始时写0进去,
结束时再修改为1。这样另一个程序就可以判断何时文件接收结束,并开始处理文件。

set SAVE_PATH=%BASE_PATH%

set TMP_PATH=%BASE_PATH%\temp

set REMOTE_PATH=/home/ecton/data/download/1234

REM 程序开始运行

echo =========================================================== >> %LOG_FILE%

set DATET=%date%%time%

echo 程序开始运行,时间:%DATET% >> %LOG_FILE%

%BASE%

if not exist %BASE_PATH% (

mkdir %BASE_PATH%

)

if not exist %SAVE_PATH% (

mkdir %SAVE_PATH%

)
if not exist %TMP_PATH% (

mkdir %TMP_PATH%

)

cd %TMP_PATH%

echo 0 > %FLAG_FILE%

if not exist %SAVE_PATH% (

echo 无法找到标志文件%SAVE_PATH% >> %LOG_FILE%

goto _END

)

ftp -n -s:"%BASE_PATH%\getfile.ftp" >> %LOG_FILE%

echo 本次获得的文件如下:>> %LOG_FILE%

dir /B %TMP_PATH%\S*.edb > %TMP_PATH%\filelist.tmp ##本次接收的文件列表,供movefile.bat删除文件的标识

dir /B %TMP_PATH%\*.edb >> %LOG_FILE%

move /Y %TMP_PATH%\*.edb %SAVE_PATH%\

FOR /F "usebackq delims=" %%i IN (`type filelist.tmp`) DO call %BASE_PATH%\movefile.bat %%i %LOG_FILE% %
REMOTE_PATH%

:_END

echo 1 > %FLAG_FILE%

del %TMP_PATH%\filelist.tmp

set DATET=%date%%time%

echo 程序运行结束,时间:%DATET% >> %LOG_FILE%

echo =========================================================== >> %LOG_FILE%

exit
2.getfile.ftp文件的内容:

open 192.168.0.208

user ecton

huateng

cd /home/ecton/data/download/1234

prompt off

mget *.edb #也可以添加put、mput文件等其他操作

cd /home/ecton/data/download/pub

mget *.edb

bye

quit

exit
3.movefile.bat文件的内容:

echo open 192.168.0.208 >ftp.txt

echo user ecton huateng >>ftp.txt

echo cd %3 >>ftp.txt

echo prompt off >>ftp.txt

echo delete %1 >>ftp.txt ##这里是作删除动作,也可以rename

echo bye >>ftp.txt

echo quit >>ftp.txt

echo exit >>ftp.txt

ftp -n -s:ftp.txt >>%2
del ftp.txt

因windows下不能直接将参数传给ftp脚本函数,所以不得不想出这么一个愚蠢的办法,用getfile.bat传文件名给
movefile.bat,再由movefile.bat动态生成一个ftp脚本并执行。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: