1. FTP定时上传下载与删除文件
可能是你的分太少了吧,多给点分会有人来的。。。。这个问题我的思路是通过windows的计划任务结合批处理文件计划任务这个我就不详细说了,网上很多资料。然后是批处理命令,以下是我在另外一个问题的回答,你可以参考下:—————————我是传说中的分割线————————————测试通过。首先为dos命令下的bat文件:ftp.bat:@echo offREM 采用环境变量方式配置文件夹,日志等set BASE = d:set DOWNLOAD_PATH = d:\gaoset UPLOAD_PATH = d:\huaset LOG_PATH = d:\logset LOG_FILE = d:\log\log.txtREM 判断目录是否存在。估计目录你早已建好,但是为了完整,还是写上吧。%BASE%if not exist %DOWNLOAD_PATH% ( mkdir %DOWNLOAD_PATH%)if not exist %UPLOAD_PATH% ( mkdir %UPLOAD_PATH%)if not exist %LOG_PATH% ( mkdir %LOG_PATH%)REM 程序运行echo ========================================== >> %LOG_FILE%set DATET=%date%%time%echo 程序开始运行,时间:%DATET% >> %LOG_FILE%cd %DOWNLOAD_PATH%REM 注意下面这句,其中,download.ftp为下载指令集,注意前面的地址。ftp -n -s:"d:\download.ftp" >> %LOG_FILE%echo 本次下载的文件如下:>> %LOG_FILE%dir /B %DOWNLOAD_PATH\*.* >> %LOG_FILE%echo 下载操作结束,时间:%DATET% >> %LOG_FILE%REM 下面是上传,基本类似。ftp -n -s:"d:\upload.ftp">> %LOG_FILE%echo 本次上传的文件如下:>> %LOG_FILE%dir /B %UPLOAD_PATH\*.* >> %LOG_FILE%echo 上传操作结束,时间:%DATET% >> %LOG_FILE%echo ============================================ >> %LOG_FILE%———————再次出现的分割线————————————以下为下载指令集download.ftp:open 192.168.1.150 user TEST123cd /home/ms/gh/outprompt offmget *.*bye———————不愿出场的分割线————————————以下为上传指令集upload.ftp:open 192.168.1.150 user TEST123cd /home/ms/gh/inprompt offmput *.*bye———————最后谢幕的分割线————————————以上这些估计可以满足你的要求了。你可以参考此文件做一定的修改。
2. 请教高手,用批处理命令FTP自动下载文件。
① 如果我理解没错,远端目录,最深层的那个子目录(名称是日期)的那个,每天都是变的;你要下载的是里面的文件(不含子目录);文件下载到本地E:dzyl下,而且目录也是按服务器上的日期创建。
② 批处理固定每天运行,从服务器前一天的目录下载文件。
如果理解正确,那么下面的代码可以实现(已测试过),ip地址你需要修改!你的操作系统如果是英文,也需呀修改(具体看脚本中的提示)
@echooff&set"ftp_site=19.6.5.34"set"ftp_id=pracq"set"ftp_pwd=123456"set"ftp_remote_dir=/ftp/bos/at/pracq/"set"ftp_local_dir=E:dzyl":100set"ftpcmd={{%random%}}.ftp"ifexist%ftpcmd%goto100::英文系统用下面这个,把下面一行中的::去除::set"today=%date:~6,4%%date:~0,2%%date:~3,2%"::中文系统用下面这个,如果是英文,在下面一行句首添加::set"today=%date:~0,4%%date:~5,2%%date:~8,2%"settoday=!today:~0,4!-!today:~4,2!-!today:~-2!call:Date2Day!today!1Yesterdaysetftp_remote_dir=!ftp_remote_dir!!yesterday!>%ftpcmd%echoopen!ftp_site!>>%ftpcmd%echo!ftp_id!>>%ftpcmd%echo!ftp_pwd!>>%ftpcmd%echocd!ftp_remote_dir!>>%ftpcmd%echobyefor/f%%iin('ftp-s:%ftpcmd%')doif{%%i}=={550}(!gotoend)setftp_local_dir=!ftp_local_dir!!yesterday!md!ftp_local_dir!1>nul2>&1ifnotexist!ftp_local_dir!(!gotoend)>%ftpcmd%echoopen!ftp_site!>>%ftpcmd%echo!ftp_id!>>%ftpcmd%echo!ftp_pwd!>>%ftpcmd%echocd!ftp_remote_dir!>>%ftpcmd%echolcd!ftp_local_dir!>>%ftpcmd%echobinary>>%ftpcmd%echopromptn>>%ftpcmd%echomget*.*>>%ftpcmd%echobyeset/acount=0for/f%%iin('ftp-s:%ftpcmd%')do(if{%%i}=={226}set/acount=!count%+1)if!count!gtr0(echoDone.!count!file^(s^)downloaded.)else(echoNofilehasbeendownloaded.)gotoend:Date2Day::call:Date2Day2007-11-122Day@echooff&setlocalfor/f"tokens=1-3delims=/-:,"%%ain('echo/%~1')do(set/ayy=%%a,mm=100%%b%%100,dd=100%%c%%100)set/az=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2set/aj=j/5+dd+y*365+y/4-y/100+y/400-2472633set/ai=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=aset/ad=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5set/add=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10(if%mm%LSS10setmm=0%mm%)&(if%dd%LSS10setdd=0%dd%)endlocal&set%~3=%yy%%f%%mm%%f%%dd%&goto:eof:endifexist%ftpcmd%(typenul>%ftpcmd%&&del/f/q%ftpcmd%1>nul2>&1)endlocal&@echoon
测试运行结果:
Done.5file(s)downloaded.