基础概念
在开始之前,你需要了解几个基本要素:

- FTP 服务器地址:
ftp.example.com或一个 IP 地址168.1.100。 - 用户名和密码:用于登录 FTP 服务器的凭据,有些服务器允许匿名登录(用户名
anonymous,密码通常为你的邮箱地址或留空)。 - 远程文件路径:你想下载的文件在服务器上的位置,
/pub/files/document.zip。 - 本地路径:你希望将文件保存到本地电脑的哪个位置,
C:\Downloads。
交互式 FTP 下载(最常用)
这是最直接的方法,你通过输入命令一步步与 FTP 服务器交互。
步骤 1:打开命令提示符
按下 Win + R 键,输入 cmd,然后按回车。
步骤 2:连接到 FTP 服务器
在命令行中输入 ftp 命令,后跟服务器地址。
ftp ftp.example.com
如果服务器使用特定端口(非默认的 21),可以这样指定:

ftp ftp.example.com 2121
步骤 3:登录
根据提示输入你的用户名和密码。
User (ftp.example.com:(none)): your_username 331 Password required for your_username. Password: *******
注意:输入密码时,为了安全,屏幕上不会显示任何字符(星号 或空白),这是正常的。
如果登录成功,你会看到类似 230 User logged in. 的欢迎信息。
步骤 4:基本操作(可选但推荐)
在下载文件前,你可能需要一些基本命令来导航服务器。

dir或ls:列出当前目录下的文件和文件夹。cd [目录名]:进入指定的子目录。cd pub。pwd:显示当前所在的远程目录路径。lcd [本地路径]:非常重要! 设置你希望下载文件保存到的本地路径。lcd C:\Downloads,如果不设置,文件通常会下载到当前用户的主目录(如C:\Users\YourUser)。
步骤 5:下载文件
使用 get 命令下载单个文件。
get remote_filename.txt
get important_data.zip
执行后,FTP 会显示下载进度,完成后会提示 226 Transfer complete.。
步骤 6:下载整个目录(递归)
FTP 的 get 命令本身不支持递归下载目录,要下载一个目录及其所有子目录和文件,你需要使用 mget 命令配合 prompt 命令。
-
关闭交互提示:
mget在下载多个文件时,默认会每个文件都询问你是否要下载,先关闭这个提示。prompt
(输入后应该会显示
Interactive mode OFF.) -
使用通配符:
mget支持通配符 。mget *
这会下载当前远程目录下的所有文件。
-
递归下载目录:标准的
ftp.exe不支持递归,你需要借助xcopy或robocopy等 Windows 命令,一个常见的技巧是先在本地创建目录结构,然后逐个下载。一个更简单的方法是使用第三方工具,如 WinSCP 或 FileZilla,它们对目录下载的支持非常好,但如果必须用命令行,可以这样做:
# 1. 在本地创建与远程目录同名的文件夹 mkdir local_folder_name # 2. 进入这个本地文件夹 cd local_folder_name # 3. 回到FTP,进入远程对应的目录 # (假设你已经知道远程目录名,/remote/folder) cd remote/folder # 4. 使用 mget 下载所有文件到当前本地目录 mget *
这个方法需要你手动一层一层地操作,比较繁琐。
步骤 7:断开连接并退出
完成所有操作后,输入 bye 或 quit 退出 FTP 会话。
bye
完整示例
假设我们要从 ftpfiles.example.com 下载 reports 目录下的 Q4_Report.xlsx 文件,并保存到 D:\MyFTPDownloads。
C:\Users\YourName> ftp ftpfiles.example.com Connected to ftpfiles.example.com. 220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- 220-You are user number 1 of 50 allowed. 220-Local time is now 14:30. Server port 21. 220-This is a private system - No anonymous login 220 You will be disconnected after 15 minutes of inactivity. User (ftpfiles.example.com:(none)): myuser 331 Password required for myuser. Password: ******** 230-User myuser has group access to: mygroup 230-User myuser has no special access restrictions 230 Login successful. Remote system type is UNIX. ftp> dir 200-Here comes directory listing . -rw-r--r-- 1 myuser mygroup 1234 Jan 15 10:00 file1.txt . -rw-r--r-- 1 myuser mygroup 5678 Jan 15 10:01 file2.log d rwxr-xr-x 1 myuser mygroup 0 Jan 14 09:00 reports 200 Port OK, 200 Data Connection 226 Directory send ok. ftp> cd reports 250 Directory successfully changed. ftp> pwd 257 "/" is the current directory ftp> lcd D:\MyFTPDownloads Local directory now D:\MyFTPDownloads ftp> get Q4_Report.xlsx local: Q4_Report.xlsx remote: Q4_Report.xlsx 200 Port OK, 200 Data Connection 150 Opening BINARY mode data connection for Q4_Report.xlsx (12345 bytes) 226 Transfer complete. 12345 bytes received in 0.05 seconds (245.1 Kbytes/s) ftp> bye 221 Goodbye! C:\Users\YourName>
自动化 FTP 下载(批处理脚本)
如果你需要定期执行下载任务,手动输入命令会很麻烦,这时可以创建一个批处理文件(.bat)来自动化整个过程。
核心技巧:使用 ftp -s:脚本文件名.txt 命令,它会自动执行 脚本文件名.txt 中的所有命令。
步骤 1:创建 FTP 命令脚本文件
用记事本创建一个文件,download_commands.txt如下:
open ftp.example.com your_username your_password lcd C:\Downloads get remote_file.zip bye
重要提示:
- 不要保存为
.bat,保存为.txt文件,否则会形成循环调用。 - 密码明文存储:这种方式会将密码以明文形式保存在脚本文件中,存在安全风险,请确保该文件的访问权限受到严格控制。
lcd、get等命令的执行顺序很重要。
步骤 2:创建批处理文件
再用记事本创建一个 .bat 文件,run_ftp_download.bat如下:
@echo off echo Starting FTP download... ftp -s:download_commands.txt echo FTP download finished. pause
步骤 3:运行批处理文件
双击 run_ftp_download.bat 文件,它就会自动连接服务器、登录、下载文件并退出,全程无需人工干预。
现代 FTP 的替代方案:psftp (PuTTY)
Windows 自带的 ftp.exe 功能较为基础,如果你需要更强大的功能(如 SFTP 协议,更安全),可以使用 PuTTY 套件中的 psftp.exe。
SFTP (SSH File Transfer Protocol) 运行在 SSH 协议之上,比传统的 FTP 更安全(数据加密)。
- 下载 PuTTY:从 官方网站 下载并安装。
- 使用
psftp:psftp your_username@ftp.example.com
- 登录后,命令与 Linux/Unix 的
sftp类似:ls:列出文件。cd:切换远程目录。lcd:切换本地目录。get file.txt:下载文件。put local_file.txt:上传文件。bye:退出。
psftp 对目录递归下载的支持同样有限,但它是进行安全文件传输的更好选择。
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
交互式 ftp |
直观,无需准备脚本 | 手动操作,重复劳动 | 一次性、少量的文件下载 |
| 批处理脚本 | 自动化,可重复执行 | 密码明文,脚本编写略复杂 | 定时任务、自动化流程 |
psftp (PuTTY) |
安全(SFTP协议),功能更强 | 需要额外安装PuTTY | 需要安全传输或类Unix命令体验的用户 |
对于大多数 Windows 交互式 ftp 适合临时任务,而 批处理脚本 是实现自动化的标准方法,如果安全性是首要考虑,强烈建议使用 psftp 或图形化工具如 WinSCP。
