在Windows操作系统中,命令行工具(如命令提示符或PowerShell)为用户提供了高效、灵活的文件下载方式,尤其适用于批量下载、自动化脚本或无图形界面的服务器环境,本文将详细介绍如何通过Windows命令行下载文件,涵盖不同工具的使用方法、参数配置及常见场景的解决方案。

使用curl命令下载文件
Windows 10及更高版本已内置curl工具(基于libcurl),支持通过HTTP、HTTPS、FTP等协议下载文件,其基本语法为curl [选项] [URL],常用参数包括:
-o或--output:指定下载文件的保存名称及路径,例如curl -o example.txt https://example.com/example.txt。-O或remote-name:使用URL中的文件名保存,例如curl -O https://example.com/files/archive.zip。-L或--location:跟随重定向,适用于短链接或需要跳转的URL。-C -或--continue-at -:支持断点续传,例如curl -C - -O https://example.com/largefile.iso。-u或--user:提供身份验证信息,例如curl -u username:password https://example.com/protected/file.txt。- 显示进度条,适合大文件下载。
示例场景:下载一个需要身份验证的文件并显示进度
curl -u user:pass -# -o document.pdf https://example.com/docs/document.pdf
使用PowerShell命令下载文件
PowerShell作为Windows更强大的命令行工具,提供了Invoke-WebRequest和Invoke-RestMethod cmdlet,支持更复杂的下载逻辑,如处理Cookies、Headers或POST请求,基本语法为:
Invoke-WebRequest -Uri [URL] -OutFile [路径]:下载文件并保存,例如Invoke-WebRequest -Uri https://example.com/image.jpg -OutFile C:\Downloads\image.jpg。-UseBasicParsing:避免调用COM对象,提升性能,例如Invoke-WebRequest -Uri https://example.com/data.json -OutFile data.json -UseBasicParsing。-SessionVariable:保存会话信息,适用于需要登录的网站,$session = Invoke-WebRequest -Uri https://example.com/login -Method POST -Body "username=user&password=pass" Invoke-WebRequest -Uri https://example.com/protected/file.zip -OutFile file.zip -WebSession $session
示例场景:批量下载文件并重命名

$urls = @("https://example.com/file1.txt", "https://example.com/file2.txt")
for ($i=0; $i -lt $urls.Length; $i++) {
Invoke-WebRequest -Uri $urls[$i] -OutFile "C:\Downloads\file_$($i+1).txt"
}
使用bitsadmin工具下载文件
bitsadmin是Windows后台智能传输服务(BITS)的命令行工具,支持断点续传、限速及后台下载,适合不稳定网络环境,基本语法为:
bitsadmin /transfer [作业名] [URL] [本地路径],例如bitsadmin /transfer MyDownloadJob https://example.com/video.mp4 C:\Downloads\video.mp4。/priority [优先级]:设置下载优先级(0-7,默认为3),例如bitsadmin /transfer /priority 7 MyDownloadJob ...。/setminretry [秒数]:设置重试间隔,例如bitsadmin /setminretry 60 MyDownloadJob。
示例场景:创建限速的后台下载任务
bitsadmin /transfer /priority 3 /setminretry 30 MyDownloadJob https://example.com/backup.iso C:\Downloads\backup.iso
不同工具的对比与选择
| 工具 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| curl | 轻量、跨平台、支持多协议 | 需要手动处理会话(较复杂) | 简单HTTP/HTTPS下载、脚本调用 |
| PowerShell | 功能强大、支持对象处理 | 语法较复杂、性能略低 | 复杂请求、会话管理、批量操作 |
| bitsadmin | 支持断点续传、限速、后台下载 | 仅限Windows、命令较繁琐 | 大文件、不稳定网络、自动化任务 |
常见问题解决
-
下载失败提示“SSL证书错误”
可通过curl的-k参数跳过证书验证(仅测试环境使用):curl -k -o file.txt https://example.com/file.txt,PowerShell中可使用-SkipCertificateCheck(需PowerShell 7+)。 -
下载速度慢或中断
(图片来源网络,侵删)- 使用
bitsadmin开启断点续传:bitsadmin /reset MyDownloadJob恢复中断任务。 - 通过curl的多线程工具(如
aria2c)加速:需先安装aria2,命令为aria2c -x 16 -s 16 https://example.com/largefile.zip。
- 使用
相关问答FAQs
Q1: 如何通过命令行下载整个FTP目录?
A1: 使用curl的--create-dirs和-O参数配合通配符,例如curl -r --create-dirs -O "ftp://user:pass@ftp.example.com/dir/*" -o C:\Downloads\dir,或使用PowerShell的FtpWebRequest遍历目录后逐一下载。
Q2: 如何验证下载文件的完整性?
A2: 下载后通过命令行计算哈希值对比,计算SHA256哈希:certutil -hashfile C:\Downloads\file SHA256,与网站提供的哈希值比对,若不一致需重新下载。
