1. 介绍
2. DriveHQ 命令 FTP 语法和参数
3. 创建 FTP 脚本文件
3.1 FTP脚本文件示例
3.2 带参数的 FTP 脚本文件
4. 使用 Windows 任务计划程序自动传输文件
5. 使用 DriveHQ 命令 FTP 自动文件夹同步
6. FTP 命令参考
6.1 标准FTP命令
6.2 DriveHQ 高级 FTP 命令
1. 介绍
DriveHQ Command FTP 是一款功能强大的命令行 FTP 和 SFTP 客户端,旨在取代 Windows FTP 客户端。它支持 FTP 脚本编写,并且兼容任何标准 FTP/SFTP 服务器。
FTP/SFTP 在通过互联网传输大型文件/文件夹方面非常流行。命令行 FTP 客户端广泛用于通过 FTP 脚本进行自动化文件传输。许多人使用 Windows 系统内置的命令行 FTP 客户端。然而,内置 FTP 客户端存在一些主要缺点:
- 1. 它仅支持主动模式 FTP,而这种模式经常被路由器、防火墙或安全软件阻止。
- 2. 它仅支持普通的FTP,不支持数据加密。
- 3. 它不支持自动恢复/重试。
DriveHQ Command FTP旨在取代Windows默认的FTP客户端。它具有以下优势:
- 1. 它支持主动模式和被动模式的FTP。
- 2. 它支持基于 SSL 的 FTP(FTPS 和 FTPES)和 SFTP。
- 3. 它支持自动恢复/重试。
- 4. 它支持数据压缩和加密。
- 5. 它支持文件夹的下载/上传。
- 6. 它支持文件夹镜像/同步。
- 7. 它支持事件日志记录,用于审计和故障排除。
- 8. 它可以于手术后发送电子邮件报告。
- 9. 它支持功能更强大的FTP脚本。
在许多情况下,DriveHQ Command FTP 可以直接替代 Windows FTP 客户端。它们语法和命令行参数类似。然而,DriveHQ Command FTP 提供了更多功能。它只需一条命令即可处理复杂的文件传输任务。凭借其对 SFTP 的支持,您可以编写 FTP 脚本文件,并将其连接到 SFTP 服务器运行。
2. DriveHQ 命令 FTP 语法和参数
句法
cmdftp FTP_SERVER [-u:USERNAME] [-p:PASSWORD] [-i] [-A] [-k:"PRIVATE_KEY_FILE"] [-s:"FTP_SCRIPT_FILE"] [-d:"LOG_FILE"] [-m:"SOURCE_FTP_SERVER", "DESTINATION_FTP_SERVER"] [CMDOPTIONS]
cmdftp [-s:"FTP_SCRIPT_FILE"] [-d:"logfile"]
参数
| 范围 |
描述 |
| FTP服务器 |
FTP/SFTP 服务器名称或 IP 地址,例如 ftp.drivehq.com、ftp://ftp.drivehq.com 或 ftps://ftp.drivehq.com。除非参数包含 -s:FTP_SCRIPT_FILE,否则此项为必填项
|
|
| -u:用户名 |
指定 FTP/SFTP 帐户用户名。 |
|
| -p:密码 |
指定FTP/SFTP帐户密码。 |
|
| -k:"私钥文件" |
(可选)指定 SFTP 私钥文件路径。 |
|
| -s:"FTP_SCRIPT_FILE" |
可选。指定 FTP 脚本文件路径。如果提供了此参数,则除“-d:LOG_FILE”选项外,其他参数将被忽略。 |
命令选项
| /xo[:时间] |
排除旧文件 |
|
| /xn[:时间] |
排除较新的文件 |
|
| /xf:文件名 |
排除文件,文件以逗号分隔 |
|
| /xd:文件夹名称 |
排除文件夹,文件夹之间用逗号分隔 |
日志记录选项
| -d:"日志文件名" |
指定日志文件路径。如果使用“-d”参数而未指定日志文件名,则会在控制台窗口中显示日志。 |
3. 创建 FTP 脚本文件
FTP脚本在IT管理员和系统集成商中非常流行。它们广泛应用于自动化数据备份和文件传输。FTP脚本允许您创建一个包含FTP命令和输入列表的文本文件。然后,您可以一次性按顺序运行这些命令。由于一个脚本文件可以包含许多FTP命令,因此它可以完成非常复杂的文件传输任务。
使用默认的 Windows FTP 客户端进行 FTP 脚本操作非常有限:它仅支持普通的 FTP,安全性不高;它仅支持主动模式 FTP,而这种模式经常被路由器/防火墙阻止。DriveHQ Command FTP 支持 Windows FTP 客户端的大部分功能;此外,它还支持 Windows FTP 客户端所不具备的许多功能。DriveHQ Command FTP 与所有标准 FTP 服务器兼容。
要编写 FTP 脚本文件,您可以先以交互模式运行 FTP 命令。打开命令窗口,输入以下命令,如下图所示:
这些命令通常包括:连接到 FTP 服务器、登录服务器、列出目录中的文件/文件夹、更改当前目录、上传/下载/删除文件等等。如果您只是偶尔使用 FTP,那么上述方法就足够了。但是,如果您需要重复传输/备份/删除文件,例如作为计划备份任务的一部分,或者与其他公司进行 EDI(电子数据交换)通信,您可以轻松编写一个可以反复使用的脚本文件。结合操作系统支持的任务计划程序,您可以实现业务流程的自动化。
FTP脚本文件示例
FTP脚本文件与交互式FTP会话中使用的命令/输入相同。基本上,您只需在文本编辑器(例如记事本)中创建一个文本文件,然后像在交互模式下一样输入命令和输入即可。DriveHQ的命令FTP与Windows FTP客户端的界面非常相似。以下命令可以在Windows FTP客户端和DriveHQ的命令FTP客户端中运行。要使用命令FTP,请输入cmdftp而不是ftp。例如::
C:\>ftp ftp> 打开 ftp.drivehq.com
已连接到 ftp.drivehq.com。220 欢迎使用最受欢迎的 FTP 托管服务!节省硬件、软件、托管和管理费用。共享具有读写权限的文件/文件夹。访问 http://www.drivehq.com/ftp/;用户 (ftp.drivehq.com:(none)): dhqdemo
331 用户名正确,需要密码。密码: xxxxxxxxx
230 用户 dhqdemo 已登录。ftp> CD测试
250 CWD 命令执行成功。“/test”是当前目录。ftp> 删除 orders.xml.bak
550 文件未找到。ftp> 将 orders.xml 重命名为 orders.xml.bak
350 文件已存在,已准备好指定目标名称。250 文件“/test/orders.xml”已成功重命名。ftp> 将 c:\test\orders.xml 放入
200 端口命令成功。150 正在打开二进制模式数据连接以进行文件传输。226 传输完成 ftp:已发送 41 字节,耗时 0.06 秒,速度为 0.65 千字节/秒。ftp> 辞职
221 再见 C:\>
如您所见,这些命令将:
- 登录到 FTP 服务器:ftp.drivehq.com;
- 请输入用户名和密码;
- 切换到本地目录“c:\test”;
- 切换到 FTP 目录“/test”;
- 删除 FTP 服务器上的“Orders.xml.bak”文件(如果存在);
- 在 FTP 服务器上,将文件“Orders.xml”(如果存在)重命名为“Orders.xml.bak”;
- 将本地文件“Orders.xml”上传到FTP服务器;
- 出口
您可以在命令窗口中运行这些命令来调试代码,然后再将其保存到脚本文件中。脚本内容如下:
打开 ftp.drivehq.com 用户名 xxxxxxxxx cd test 删除 orders.xml.bak 重命名 orders.xml orders.xml.bak 放入 c:\test\orders.xml 退出
上述FTP脚本可以每天执行,以自动将新订单信息传输到FTP服务器。它会将最新的“Orders.xml”文件上传到FTP服务器;在上传文件之前,它会重命名(备份)先前的文件。
要运行 FTP 脚本,只需执行带有 -s 选项的 FTP 命令即可。使用 Windows FTP 客户端,您可以这样做:
ftp -s:ftpscript.txt
使用 DriveHQ 命令 FTP 客户端,您可以
cmdftp -s:ftpscript.txt
带参数的 FTP 脚本
上述FTP脚本是静态的,可以重复运行,但灵活性不高。例如,如果需要为多个客户端传输数据,可能需要使用不同的文件夹。要重复使用同一个FTP脚本,就需要支持额外的参数。目前有两种解决方案:
(1)使用批处理脚本文件动态创建 FTP 脚本文件。Windows 批处理脚本可以接受命令行参数。如果您使用 Windows FTP 客户端,这是唯一的解决方案。
(2)DriveHQ 命令 FTP 支持其他参数。
第一种方法需要创建一个批处理文件,例如 test.bat。将文件保存在 C:\test 文件夹中。您可以通过输入以下命令来运行该批处理文件:
c:\test\test.bat PARAM1 PARAM2 ...
test.bat 文件将如下所示:
@echo 关闭 echo 打开 ftp.drivehq.com> ftpscript.txt echo USERNAME>> ftpscript.txt echo PASSWORD>> ftpscript.txt echo cd %1>> ftpscript.txt echo delete %2.bak>> ftpscript.txt echo rename %2 %2.bak>> ftpscript.txt echo put c:\%1\%2>> ftpscript.txt echo quit>> ftpscript.txt
这样,您就可以将批处理文件的参数传递给 FTP 脚本文件。同一个批处理脚本可以被不同的公司重复使用,例如::
c:\test\test.bat c:\OrdersOfCompanyA ordersOfCompanyA.xml c:\test\test.bat c:\OrdersOfCompanyB ordersOfCompanyB.xml
使用 DriveHQ Command FTP,您可以运行带有附加参数的 FTP 脚本。这样,您无需创建批处理脚本文件。只需使用以下命令运行 FTP 脚本即可:
cmdftp -s:ftpscript.txt 参数1 参数2 参数3 ...
FTP脚本文件需要进行如下少量修改:
# %1 %1 类似于“test”,%2 类似于“orders.xml” # 此文件保存为 c:\temp\ftpscript2.txt # 要运行它,请使用: # cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml open ftp.drivehq.com USERNAME PASSWORD cd /%1 delete /%1/%2.bak rename /%1/%2 /%1/%2.bak put c:\%1\%2 quit
在上述脚本文件中,文件夹名称被替换为 %1,文件名被替换为 %2。要运行 FTP 脚本,您必须将这些参数作为命令行参数提供。
cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml
当 DriveHQ Command FTP 执行脚本文件时,它会将 %1 替换为“test”,将 %2 替换为“orders.xml”。
4. 使用 Windows 任务计划程序自动传输文件
无论您是使用批处理文件还是直接使用 DriveHQ Command FTP,都可以在 Windows 任务计划程序中安排文件传输。您可以设置任务每天、每周或每月运行。在高级设置中,您甚至可以设置任务每隔几小时或几分钟运行一次。您还可以设置任务的启动时间。要启动任务计划程序,请在搜索框中输入“任务计划程序”,请参见以下屏幕截图:
点击“任务计划程序”,即可启动 Windows 任务计划程序。
要创建任务,请点击“创建基本任务”。
输入任务名称和描述,然后单击“下一步”。
选择任务计划。您可以选择每日、每周或每月。如果您想按小时运行任务,可以稍后在高级设置中进行设置。点击“下一步”设置操作。
在“操作”页面中,选择“启动程序”,然后单击“下一步”。
浏览并选择 DriveHQ Command FTP (cmdftp.exe) 作为程序。在“添加参数”文本框中添加命令行参数。“起始位置”为可选,您可以将其设置为与 EXE 文件相同的文件夹。单击“下一步”完成任务创建。
要访问高级设置,请点击“任务计划库”,您可以看到已计划任务的列表。双击“上传订单”任务,即可编辑任务设置。
请注意,默认情况下,任务仅在用户登录时运行。您可以在此处更改设置,以便在用户未登录时也运行任务。
5. 使用 DriveHQ 命令 FTP 自动文件夹同步
DriveHQ Command FTP 支持文件夹镜像。将本地文件夹与 FTP 文件夹同步非常简单。只需使用以下命令即可:
cmdftp FTP_SERVER -u:username -p:password -m:"LOCAL_FOLDER|FTP_FOLDER"
使用 Windows 任务计划程序,您可以运行此命令定期同步这两个文件夹。
6. FTP 命令参考
登录 FTP 服务器后,您可以向 FTP 服务器发送 FTP 命令。Windows FTP 客户端支持以下命令。请注意,这些命令与……不同 FTP协议中定义的FTP命令.
每个FTP协议命令通常只处理一个简单的问题。但在Windows FTP客户端中,一个FTP命令可能使用多个FTP协议命令。
DriveHQ Command FTP 与 Windows FTP 客户端类似,支持类似的命令和语法。此外,它还支持一些 DriveHQ 特有的高级 FTP 命令,例如复制、移动、上传、下载或删除文件夹的命令。
6.1 Windows FTP客户端命令
Windows FTP客户端(ftp.exe)支持以下FTP命令:
| FTP 命令 |
描述 |
| ! |
此命令可在本地操作系统和 FTP 服务器之间切换。登录 FTP 服务器后,默认切换到 FTP 服务器。如果要在本地运行命令,通常可以使用 !CMD_NAME,例如 !dir、!mkdir 等。 |
| ? |
显示帮助信息。 |
| 附加 |
追加到文件中。 |
| ASCII |
设置ASCII传输模式。 |
| 钟 |
开启“命令完成时发出哔声”功能。 |
| 二进制 |
设置二进制传输模式。 |
| 再见 |
断开FTP会话并退出。 |
| 光盘 |
更改目录。 |
| 关闭 |
终止FTP会话。 |
| 删除 |
删除文件。 |
| 调试 |
切换调试模式的开启或关闭。 |
| 你 |
列出目录中的文件和子文件夹。
|
| 断开 |
断开FTP会话。 |
| 得到 |
从远程FTP服务器获取文件。 |
| 全球 |
启用或禁用通配符。禁用后,文件名中的通配符(在 放 和 得到 命令)会被按字面意思执行。 |
| 哈希 |
切换打印“#”的选项,用于显示每个传输的缓冲区。 |
| 帮助 |
显示帮助信息;通常使用 help COMMAND_NAME。 |
| 液晶显示屏 |
如果单独输入,则显示当前本地工作目录;否则,更改本地工作目录。 |
| 文字 |
向连接的 FTP 服务器发送任意命令,并期望收到一行响应。 |
| ls |
列出FTP文件夹中的文件。 |
| 删除 |
删除FTP服务器上的多个文件。 |
| 是 |
列出多个 FTP 目录的文件/子文件夹。 |
| 管理 |
从 FTP 服务器下载多个文件到本地工作文件夹。 |
| 创建目录 |
创建一个新目录。 |
| 毫升 |
列出多个FTP目录的内容。 |
| 计算 |
将多个本地文件上传到 FTP 服务器。 |
| 打开 |
连接到FTP服务器。 |
| 迅速的 |
启用或禁用对多个命令的交互式提示。 |
| 放 |
将一个文件上传到FTP服务器。 |
| 密码 |
打印FTP服务器上的工作目录。 |
| 辞职 |
断开与FTP服务器的连接并退出。 |
| 引用 |
与字面命令相同(发送任意 ftp 命令)。 |
| 接收 |
从FTP服务器下载/接收文件。 |
| 远程协助 |
从远程服务器获取帮助。 |
| 重命名 |
重命名FTP服务器上的文件。 |
| 删除目录 |
删除 FTP 服务器上的目录。 |
| 发送 |
发送一个文件。 |
| 地位 |
显示当前选项的状态。 |
| 痕迹 |
切换数据包跟踪。 |
| 类型 |
设置文件传输类型。 |
| 用户 |
发送新用户信息(用户名)。 |
| 冗长 |
开启或关闭详细输出。 |
6.2 DriveHQ 高级 FTP 命令
DriveHQ Command FTP 支持一些更高级的 FTP 命令:
| FTP 命令 |
描述 |
| 下载 |
下载文件夹或文件。
语法:下载 [FTP 文件或文件夹路径] [本地文件或文件夹路径]]
|
| 上传 |
上传文件夹或文件。
语法:上传 [本地文件或文件夹路径] [FTP 文件或文件夹路径]]
|
| 镜子 |
镜像本地文件夹和 FTP 文件夹。
语法:MIRROR [本地文件夹路径] [FTP文件夹路径]]
|
| 删除旧文件 |
在指定文件夹中,删除超过 x 天的文件。
语法:RMDIR [FTP 路径] /xo:[时间]
|