工作中,为了减轻人工工作量,有时需要做一些自动传输文件操作。这本身不是什么难事,可以通过各种编程语言实现。但假如你需要做得很轻量级,即不在客户端电脑安装任何软件就能完成这个工作。这时可以考虑用cmd命令实现,因为大多windows系统都是默认自带ftp命令的。
一、用cmd的ftp命令上传文件:
通过上面简单的命令就可以将我的文件D:\test.png上传到FTP服务器。
二、bat批处理命令上传文件到ftp服务器
既然能通过cmd命令能上传文件,那我们就干脆把它写成一个.bat批处理文件,然后在电脑中设置一个定时任务定时来执行这个bat文件就可以了。
新建一个文本文件修改后缀名为.bat,如sendByFTP.bat
@Echo Off
Echo open 192.168.0.243 >ftp.up
Echo test>>ftp.up
Echo testpassword>>ftp.up
Echo Cd .\ >>ftp.up
Echo binary>>ftp.up
Echo put "D:\test.png">>ftp.up
Echo bye>>ftp.up
FTP -s:ftp.up
del ftp.up /q
双击或者通过cmd命令运行这个sendByFTP.bat就能把D:\test.png上传到FTP服务器。
sendByFTP.bat的逻辑是先创建一个临时文件ftp.up,内容如下:
open 192.168.0.243
test
testpassword
Cd .\
binary
put "D:\test.png"
bye
然后通过FTP -s:ftp.up命令运行这个临时文件,最后再通过del ftp.up /q删除掉这个临时文件。
为怎么要用Echo写创建临时文件ftp.up,然后再删掉,而不是干脆直接保存一个ftp.up文件,每次都用FTP运行这个ftp.up文件呢?原因很简单,因为你并不是每次都是上传D:\test.png文件,要上传什么文件应该是一个变量,命令运行时才确定。你有可能需要每天上传按当天日期命名的文件,或者检测某个目录有新增文件时才上传该文件。
三、问题与总结
1、上面的做法有些拙劣,不过能解决一般的简单问题。如果要定时上传文件,只需要写一个bat批命令,检测需要上传的文件,然后再通过上面介绍的方法,把文件上传到服务器,并在系统定时任务中定时运行bat脚本即可。另外注意不要同时运行多次jiao
2、还有一个很大的缺点是,windows自带的ftp命令似乎不支持pasv被动模式,我试过很多种方法去切换成pasv被动模式都没成功。
author:蓝何忠