1. FTP.exe工具
ftp.exe是Windows系统提供的一个FTP客户端命令行工具。通过ftp.exe可以完成登录,显示远程文件、下载、上传、重命名、删除远程文件等操作。
1.1. 命令参数
FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [host]
- -v 禁止显示远程服务器响应。
- -n 禁止在初始连接时自动登录。
- -i 关闭多文件传输过程中的交互式提示。
- -d 启用调试。
- -g 禁用文件名通配(请参阅 GLOB 命令)。
- -s:filename 指定包含 FTP 命令的文本文件;命令在 FTP 启动后自动运行。
- -a 在绑字数据连接时使用所有本地接口。
- -A 匿名登录。
- -x:send sockbuf 覆盖默认的 SO_SNDBUF 大小 8192。
- -r:recv sockbuf 覆盖默认的 SO_RCVBUF 大小 8192。
- -b:async count 覆盖默认的异步计数 3
- -w:windowsize 覆盖默认的传输缓冲区大小 65535。
- host 指定主机名称或要连接到的远程主机的 IP 地址。
- mget 和 mput 命令将 y/n/q 视为 yes/no/quit。
- 使用 Ctrl-C 中止命令。
- 注意:一般情况,我们主要是通过ftp.exe来调用ftp命令文件,主要使用如下方式:
FTP -i -s:ftpCMD.txt
1.2. FTP命令
FTP命令可以在ftp.exe命令行环境下单个运行,也可以集成文件中,通过FTP -s:ftpCMD.txt这样的方式全部运行。以下列出所有的FTP命令。
- ! 转义到 shell
- delete 删除远程文件
- literal 发送任意 ftp 命令
- prompt 在多个命令上强制交互提示
- ? 打印本地帮助信息
- debug 切换调试模式
- ls 列出远程目录的内容
- put 发送一个文件
- send 发送一个文件,作用同put
- mput 发送多个文件
- status 显示当前状态
- append 附加至文件
- dir 列出远程目录的内容
- mdelete 删除多个文件
- pwd 在远程计算机上打印工作目录
- trace 切换数据包跟踪
- ascii 设置 ASCII 传输类型
- disconnect 终止 ftp 会话
- mdir 列出多个远程目录的内容
- quit 终止 ftp 会话并退出
- type 设置文件传输类型
- bell 命令完成时发出声响
- get 接收文件
- recv 接收文件,作用同get。
- mget 获取多个文件
- quote 发送任意 ftp 命令
- user 发送新用户信息
- binary 设置二进制传输类型
- glob 切换本地文件名的元字符扩展
- mkdir 在远程计算机上创建目录
- verbose 切换详细模式
- bye 终止 ftp 会话并退出
- hash 为每个缓冲区传输切换打印“#”
- mls 列出多个远程目录的内容
- remotehelp 从远程服务器获取帮助
- cd 更改远程工作目录
- help 打印本地帮助信息
- rename 重命名文件
- close 终止 ftp 会话
- lcd 更改本地工作目录
- open 连接到远程 FTP
- rmdir 在远程计算机上删除目录
1.3. 重点命令介绍
在ftpCMD.txt中编写FTP命令操作集,然后通过FTP -s:ftpCMD.txt来调用。
- 通过prompt关闭或开启确认提示,首次调用为关闭提示,再次调用则为开启提示
- 通过lcd命令来指定本地工作目录
lcd 本地工作目录
- 通过get/recv下载远程文件,本地文件名如果省略则和远程文件同名
get RemoteFile [LocalFile]
- 通过mget下载多个远程文件,远程文件至少1个,多个以空格区分,mget默认支持通配符(但是需要FTP服务,有的FTP不支持,FileZilla服务器支持通配符)
mget RemoteFiles [ …]
mget *.ini
- 通过put/send上传本地文件,远程文件如果省略则和本地文件同名
put LocalFile [RemoteFile]
- 通过mput上传本地文件到FTP服务器当前目录,本地文件至少1个,多个以空格区分
mput LocalFiles [ …]
- 通过mls保存远程目录下的文件及文件夹名,远程文件如果用-代替表示所有,本地文件用-代替表示输出到屏幕
mls RemoteFiles [ …]LocalFile
- 通过type指定传输类型,Ftp 同时支持 ASCII 和Binary两种文件传输类型。 默认的传输类型是 ASCII。在传输文本文件时应使用 ascii 命令。在 ASCII 模式中,将执行网络标准字符集间的字符转换。例如,行尾的字符在必要时根据目标操作系统进行转换。在传输可执行文件时应该使用 binary 命令。在二进制模式中,文件是按一字节为单位进行移动的。
type [TypeName]
1.4. 示例
172.18.30.182是FTP服务器IP,mike是用户名,123456是密码,注意mike和123456之后不要用空格。
open 172.18.30.182
mike
123456
prompt
type binary
lcd I:\ftp_local
mls - info.txt
get a.ini
mget 1.ini 2.ini
put info.txt
mput aa.ini bb.ini
quit
如果不想另外编写FTP命令文件,可以完全用批处理操作,相当于用批处理来生成FTP命令文件,再执行FTP命令文件,执行完之后,删除FTP命令文件。
@echo off
echo open 172.18.30.182>ftp.txt
echo mike>>ftp.txt
echo 123456>>ftp.txt
echo prompt>>ftp.txt
echo lcd i:\ftp_local>>ftp.txt
echo type binary>>ftp.txt
rem FileZilla Server不支持远程文件用-表示所有文件,支持用*表示所有文件
echo mls - info.txt>>ftp.txt
echo get a.ini>>ftp.txt
echo mget 1.ini 2.ini>>ftp.txt
echo put info.txt>>ftp.txt
echo mput aa.ini bb.ini>>ftp.txt
echo quit>>ftp.txt
ftp -s:ftp.txt
del ftp.txt
pause
执行情况:
![批处理之FTP自动同步文件_第1张图片](http://img.e-com-net.com/image/info8/1ee7ce82c2c746efae1f1ac129c96e2a.jpg)
2. 自动同步
FTP主要完成同步的工作,而自动则需要使用Windows的定时任务命令行工具schtasks。
FTPSync.bat负责调用FTP命令文件
ftp -i -s:ftpCMD.txt
FTPSyncTask.bat则负责制订定时任务,如每天的8点启动
schtasks /create /tn "FTPSync" /tr “d:\FTPSync.bat" /sc daily /st 08:00:00
每月、每周、每天、每小时等更多定时任务,请参考:批处理之计划任务at和schtasks