Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1819487
  • 博文数量: 354
  • 博客积分: 11021
  • 博客等级: 上将
  • 技术积分: 4048
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-24 10:04
文章存档

2020年(1)

2018年(1)

2016年(1)

2015年(2)

2014年(4)

2013年(4)

2012年(12)

2011年(14)

2010年(37)

2009年(34)

2008年(22)

2007年(68)

2006年(102)

2005年(29)

2004年(21)

分类: 系统运维

2009-05-22 18:46:19


首页 脚本系统管理脚本 ftp自动上传脚本 ftp自动下载脚本 自动ftp脚本 自动下载脚本 windowsftp脚本 

FTP自动上传下载脚本。有一个外部的FTP服务器,需要帐号和密码才能访问,用于与合作单位交换文件,每天自动上传新文件,并删除旧文件,同时下载合作单位上传的文件,该如何实现?最好有个批处理的范本。如果想更完美的话,[AD:韦博斯根条码检测仪TruCheck USB,TruCheck NAV,TruCheck 403,]希望有日志,和传送及下载成功的邮件通知,批处理可以实现吗?多谢! 

回答:根据您的描述,我对这个问题的理解是:您想要编辑一个FTP的脚本来实现自动上传新文件和删除老文件。我找了一些相关的编写FTP脚本的文章供您参考,

使用 FTP 批处理脚本


John Huang 黄吉 微软全球技术支持中心

FTP自动上传下载批处理脚本的一个例子请参考如下脚本:您看到的文章来自活动目录seo http://gnaw0725.blogbus.com/c1404554/
功能介绍:自动登录远程主机,并到指定目录下下载文件,下载完成后,检查下载到本地的文件并删除主机上的文件。
程序名称及功能:
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 程序开始运行[AD:二维条码检测仪]您看到的文章来自活动目录seo http://gnaw0725.blogbus.com/c1404554/
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文件的内容:您看到的文章来自活动目录seo http://gnaw0725.blogbus.com/c1404554/
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脚本并执行。

阅读(1521) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~