实例一 直接BAT调用FTP命令 ftpbat bat内容 (***大家建立bat文件不要命名为ftp bat 执行时会有问题***)
复制代码 代码如下:
ftp open lgh get sql rar bye
从图上的结果看 bat脚本直接调用xp的FTP命令是不行的 执行时H:\>ftp会一直死循环 我这里的XP系统是SP 的 其它版本的 我没有作测试 如果有不同 欢迎大家留言告之 实例二 用put get上传 下载单个文件 把XP机器上H:\js目录下文件flower zip上传到FTP服务器 把FTP服务器中的sql rar文件下载到XP机器上的H:\JS目录 ftp get put bat内容如下
复制代码 代码如下:
@echo off set ftpfilename=autoftp cfg echo open >%ftpfilename% echo lgh >>%ftpfilename% echo >>%ftpfilename% echo bin >>%ftpfilename% echo lcd h:\js >>%ftpfilename% echo get sql rar >>%ftpfilename% echo put flower zip >>%ftpfilename% echo bye >>%ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
我们来看看结果 见下面两张图 从XP系统上看 H盘的JS目录 多了个sql rar FTP服务器上的根目录多了个flower zip 这说明 刚才的脚本完成正常的执行了 达到了预期的目的
实例三 用put get上传 下载多个文件 在XP机器上把flower zip复制一次 改名为flower zip 在XP机器上把把第二次实例下载的sql rar文件删除 以免影响到本次 *** 作 在FTP服务器上把第二次实例上传的flower zip文件删除 以免影响到本次 *** 作 把XP机器上H:\js目录下文件flower zip 和flower zip上传到FTP服务器 ftp get put many bat内容如下
复制代码 代码如下:
@echo off set ftpfilename=autoftp cfg echo open >%ftpfilename% echo lgh >>%ftpfilename% echo >>%ftpfilename% echo bin >>%ftpfilename% echo lcd h:\js >>%ftpfilename% echo put flower zip flower zip>>%ftpfilename% echo bye >>%ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
到FTP服务器上查看根目录 看flower zip与flower zip是否已成功上传 从图上看 只成功上传了flower zip文件
刚那个ftp get put many bat脚本里echo put flower zip flower zip>>%ftpfilename% flower zip是传输的最后一个文件 是不是用put时 意味着bat在处理上传时 只认最后一个文件呢 我们再多加个文件flower zip 来验证
在XP机器上把flower zip复制一次 改名为flower zip在FTP服务器上把第二次实例上传的flower zip文件删除 以免影响到本次 *** 作
ftp get put many bat内容修改如下
复制代码 代码如下:
@echo off set ftpfilename=autoftp cfg echo open >%ftpfilename% echo lgh >>%ftpfilename% echo >>%ftpfilename% echo bin >>%ftpfilename% echo lcd h:\js >>%ftpfilename% echo put flower zip flower zip flower zip>>%ftpfilename% echo bye >>%ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
结果 还是只成功上传了flower zip 因bat双击时 执行过程会一闪而过 我们看不到执行过程 到命令行去执行下 看到底出了什么问题
命令行 执行ftp get put many bat脚本 从执行情况看 flower zip三个文件都是put的 但在传输时 却只传了flower zip 真不解 有知道的朋友吗?给点方向
再换个方式 用通配符* 试试 ftp get put many bat内容修改如下
复制代码 代码如下:
@echo off set ftpfilename=autoftp cfg echo open >%ftpfilename% echo lgh >>%ftpfilename% echo >>%ftpfilename% echo bin >>%ftpfilename% echo lcd h:\js >>%ftpfilename% echo put flower* zip >>%ftpfilename% echo bye >>%ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
在FTP服务器上把上传的flower文件全部删除 以免影响到本次 *** 作执行ftp get put many bat 结果只有flower zip文件上传成功了 呵 flower zip文件 怎么都不能上传 ???
其实用put传输多个文件 完全可用重复的方式取代 比如 ftp get put many bat内容修改如下
复制代码 代码如下:
@echo off set ftpfilename=autoftp cfg echo open >%ftpfilename% echo lgh >>%ftpfilename% echo >>%ftpfilename% echo bin >>%ftpfilename% echo lcd h:\js >>%ftpfilename% echo put flower zip >>%ftpfilename% echo put flower zip >>%ftpfilename% echo put flower zip >>%ftpfilename% echo bye >>%ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
实例四 用mput mget上传 下载多个文件 在FTP服务器上删除有关flower的文件ftp mget mput many bat内容如下:
复制代码 代码如下:
@echo off set ftpfilename=autoftp cfg echo open >%ftpfilename% echo lgh >>%ftpfilename% echo >>%ftpfilename% echo bin >>%ftpfilename% echo lcd h:\js >>%ftpfilename% echo mput flower zip flower zip flower zip>>%ftpfilename% echo bye >>%ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
双击ftp mget mput many bat后 发现系统d出一窗口后 就卡住了 停止不前
原因是用了mput命令 但没有用Prompt关闭交互
ftp mget mput many bat内容修改如下:
复制代码 代码如下:
@echo off set ftpfilename=autoftp cfg echo open >%ftpfilename% echo lgh >>%ftpfilename% echo >>%ftpfilename% echo Prompt >>%ftpfilename% echo bin >>%ftpfilename% echo lcd h:\js >>%ftpfilename% echo mput flower zip flower zip flower zip>>%ftpfilename% echo bye >>%ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
再次执行ftp mget mput many bat 结果见下图
用通配符*试试在FTP服务器上删除有关flower的文件ftp mget mput many bat内容修改如下:
复制代码 代码如下:
@echo off set ftpfilename=autoftp cfg echo open >%ftpfilename% echo lgh >>%ftpfilename% echo >>%ftpfilename% echo Prompt >>%ftpfilename% echo bin >>%ftpfilename% echo lcd h:\js >>%ftpfilename% echo mput flower* zip >>%ftpfilename% echo bye >>%ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
照样成功上传有关flower* zip文件 因为结果与上一步是一样的 所以就不抓图了 实例五 用ascii在windows系统间传输非文本文件 把XP电脑上的rmb jpg通过ascii传到FTP服务器的根目录
ftp get ascii bat内容修改如下:
复制代码 代码如下:
@echo off set ftpfilename=autoftp cfg echo open >%ftpfilename% echo lgh >>%ftpfilename% echo >>%ftpfilename% echo ascii >>%ftpfilename% echo lcd h:\js >>%ftpfilename% echo put rmb jpg>>%ftpfilename% echo bye >>%ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
执行ftp get ascii bat后 发现rmb jpg可以正常上传 并且可以正常打开 那 这个现象与前面所以的ascii不能传输非文本东西有出入 这是怎么回会事呢 这是因为 FTP服务器是WINDOWS系统 XP电脑上的bat脚本也是在windows系统上运行的 所以bat在windows系统里用FTP传输文件 不管是用ascii 还是用binary 都是可以的 接下来我们再做一个实验 FTP服务器选centos 再测下ascii传输非文本文件问题 实例六 用ascii在windows系统与linux系统间传输非文本文件 在RHEL 位系统上建立一vsftpd服务器 上面说过redhat默认启用二进制传输 关闭了ascii码传输 所以我们还要修改一下vsftpd的配置文件 修改/etc/vsftpd/nf文件 允许客户端进行ascii传输 并重启vsftpd
把rmb jpg放到FTP服务器 大家注意下H:\js目录下只有ftp getascii bat文件
ftp getascii bat文件内容修改如下
复制代码 代码如下:
@echo off set ftpfilename=autoftp cfg echo open >%ftpfilename% echo ftp >>%ftpfilename% echo redhat >>%ftpfilename% echo asc >>%ftpfilename% echo lcd h:\js >>%ftpfilename% echo get rmb jpg >>%ftpfilename% echo bye >>%ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
执行ftp getascii bat 看结果 rmb jpg文件有下载到XP电脑里 双击这个文件 发现图像乱码 文件被破坏了 都是ascii码传输惹的祸换bin传输 测试一下在XP电脑上删除rmb jpg文件 再双击ftp getascii bat文件 去从LINUX的FTP服务器下载一个rmb jpg文件
修改ftp getascii bat 把ascii改给二进制传输
复制代码 代码如下:
@echo off set ftpfilename=autoftp cfg echo open >%ftpfilename% echo ftp >>%ftpfilename% echo redhat >>%ftpfilename% echo bin >>%ftpfilename% echo lcd h:\js >>%ftpfilename% echo get rmb jpg >>%ftpfilename% echo bye >>%ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
结果 文件正常下载 图像也显示正常 lishixinzhi/Article/program/qrs/201401/30223参照:.netrc文件格式:
open
ip
用户名
密码
bin
mput
d:\aa\目录下的txt文件
close
bye
以上内容建立一个文件,使用:
ftp
-i
-s:文件名
方式做计划任务调用,就可以了。
@Echo OffEcho open 10.80.138.16 >ftp.up
Echo FTP_Admin >>ftp.up
Echo Password11 >>ftp.up
Echo Cd .\User >>ftp.up
Echo binary>>ftp.up
Echo put "D:\User List\User.csv">>ftp.up
Echo bye>>ftp.up
FTP -s:ftp.up
del ftp.up /q
Pause
直接写好了.请测试.
以上代码经测试可用.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)