在cmd中下载服务器文件,核心就是使用Windows自带的ftp命令,通过open、get或mget指令即可完成。这是一套老牌但依然高效的方案,尤其适合在无图形界面的服务器环境或远程维护场景下快速拉取文件,我会从最基础的命令语法讲到批量下载、脚本自动化,最后再补上连接失败的排查思路。
用cmd连接FTP服务器的完整操作步骤
很多朋友第一次在命令行里敲ftp,对着ftp>提示符一脸茫然,其实流程非常简单,只需三步:建立连接、验证身份、操作文件,下面我们拆开讲。
第一步:打开命令行并启动FTP客户端
按下Win + R组合键,输入cmd回车即可进入命令提示符,在光标处直接键入ftp并回车,系统会进入FTP交互模式,提示符变为ftp>,这一步相当于在Windows 里打开了一个内置的文件传输工具,无需安装任何额外软件。
第二步:使用open命令连接到目标服务器
在ftp>提示符后,执行以下命令:
open 服务器IP地址或域名
你要连接的是168.1.100这台服务器,就输入:
open 192.168.1.100
如果你需要指定非默认端口(FTP默认是21),则使用:
open 服务器地址 端口号
连接成功后,系统会依次提示输入用户名和密码,输入密码时屏幕不会显示任何字符,这是正常的,不必慌张,认证通过后,你会看到以230开头的欢迎信息,说明已成功登录。
第三步:查看和切换服务器目录
登录之后,先用pwd确认当前所在的服务端目录,用dir查看目录下有哪些文件,切换目录使用cd命令,用法和Linux一致:
cd 目标目录名
如果文件放在服务器的绝对路径下,也可以直接cd /var/www/html这样指定,这里提醒一下:FTP命令是区分大小写的,CD或Cd都会报错,必须小写输入。
ftp命令行下载文件命令的核心语法与参数详解
连接和定位都搞定后,最关键的下载操作即将展开,这里我为你梳理出完整可用的命令清单,建议直接复制使用。
单文件下载:get命令
下载单个文件是最常见的需求,语法为:
get 服务器文件名 [本地保存名]
如果不指定第二个参数,文件会保存在你打开cmd时的本地工作目录下,文件名保持不变。
get report.pdf
执行后,你会陆续看到200 PORT command successful和226 Transfer complete这样的状态码,前者表示进入传输模式,后者代表传输完成,此时去cmd默认的本地目录(通常是C:\Users\你的用户名)就能找到这个PDF了。
如果你希望把文件保存到指定路径,需要先在cmd里切换本地盘符,方法很简单,直接输入:
cd /d D:\ftpdownloads
这样后续所有get命令下载的文件都会自动存入这个文件夹。
批量下载:mget命令与通配符使用
当服务器上有多个文件需要拉取时,get一条条敲就太笨重了,使用mget加上通配符或能大幅提升效率:
mget .zip
上面这条命令会下载当前目录下所有zip压缩包,在批量下载过程中,系统会逐个文件询问是否下载,如果你不想频繁按y,建议先执行一下prompt命令,它会关闭交互确认模式,让mget自动连续执行。
下载前的几个常用辅助命令
binary:切换到二进制传输模式,强烈建议在下载压缩包、图片或可执行文件前执行一次,防止文件损坏,虽然新版Windows默认开启了二进制模式,但手动执行无害。hash:每传输1024字节显示一个号,用于确认传输过程确实在推进,避免误以为卡死。ls:某些FTP服务器不支持dir时,可用ls查看文件列表。bye:断开连接并退出FTP交互模式。
Windows命令行下载服务器文件的常见失败原因排查
连接失败或下载中断是新手最头疼的问题,据网络运维工程师的实践反馈,绝大多数问题出在端口、被动模式和防火墙三者之间,以下按出现频率排序。
连接超时或拒绝连接
碰到Connection refused或长时间无响应,首先检查服务器的FTP服务是否已启动,在cmd里执行telnet 服务器地址 21测试端口通不通,如果提示连接失败,说明服务器端防火墙拦截了入站请求,需要在服务器安全组中放行TCP 21端口,另一点容易忽略的是,服务器使用被动模式(PASV)时,需要额外开放1024-65535范围的高位端口段,很多管理员只放了21,导致数据通道无法建立。
认证失败但密码确实正确
这通常和用户名格式有关,部分FTP服务器要求用户名为域名\用户名或用户名@域名形式,例如用open xxx.com连接后,提示符下输入ftpuser@xxx.com而非单纯的ftpuser,检查是否不小心开启了Caps Lock。
下载完成但文件打不开
文件损坏几乎可以断定是没有使用binary模式导致,或者服务器端文件本身处于写保护状态,重新登录,先执行binary再下载一次即可。
通过bat批处理脚本一键自动化下载FTP文件
如果每次都要手动打开cmd、敲命令,那还算不上高效,尤其在广告公司或电商团队,经常需要每天凌晨从服务器拉取素材包,此时把操作固化为脚本就极有价值。
编写基础批处理脚本
在本地新建一个文本文件,改为.bat后缀,写入以下内容:
@echo off
ftp -n -s:"d:\ftp_download.txt" 服务器地址
其中-n参数表示不自动登录,-s:后指定包含详细命令的脚本文件,接着创建ftp_download.txt为:
user 用户名 密码
binary
cd 目标路径
prompt
mget .zip
bye
双击bat文件,系统就会自动执行所有下载任务,行业共识认为,批处理脚本是Windows服务器间做定时文件同步性价比最高的方案,无需引入WinSCP等第三方工具即可满足多数场景,若需定时执行,可通过“任务计划程序”绑定该bat文件,设定每天固定时间运行,实现真正的无人值守。
脚本执行后如何验证产出
在bat末尾追加一行dir d:\ftpdownloads,即可在下载完成后列出本地目录文件,确认数量和大小是否与预期相符,另外可在脚本头部加上@echo off防止输出刷屏。
cmd连接FTP与使用第三方FTP工具在下载场景上的对比
可能你会疑惑:既然有FileZilla这种图形化工具,为什么还要用命令行?下面从几个维度做客观对比,方便你按场景选择。
| 对比维度 | cmd自带ftp命令 | FileZilla / WinSCP |
|---|---|---|
| 环境依赖 | Windows系统原生自带,无需安装 | 需下载安装客户端程序 |
| 操作效率 | 命令流畅后速度极快,适合脚本化 | 鼠标拖拽直观,适合临时少量交互 |
| 批量操作 | mget配合通配符,一行搞定 | 需要框选文件,重复度高 |
| 服务器资源 | 仅占用极低内存,几乎无开销 | 图形界面消耗更多系统资源 |
| 网络安全 | 仅支持FTP协议,不加密 | 支持SFTP、FTPS,传输加密更安全 |
日常应急或无GUI环境维护,cmd是首选;涉及生产环境敏感数据回传,务必切换到SFTP协议。 关于如何在cmd中使用SFTP,Windows 10以上系统原生集成了OpenSSH客户端,直接使用sftp 用户名@服务器地址命令,传输全程加密,这是比FTP更推荐的替代方案。
Q&A:关于ftp命令行下载的补充说明
问:cmd中的ftp命令是否支持断点续传?
答:原生命令不支持,断点续传需要借助rest 命令,但Windows内置的ftp客户端并未开放此功能,且受服务器端支持限制,若传输大文件中途断开,建议改用SFTP命令或curl工具,后者通过-C -参数即可续传。
问:为什么我的cmd输入ftp后提示不是内部或外部命令?
答:这通常发生在精简版Windows或全新安装的系统中,打开“控制面板程序启用或关闭Windows功能”,勾选“TFTP客户端”和“简单TCP/IP服务”后重启系统,ftp命令方可生效。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/784681.html


