如何用DOS命令快速拷贝FTP文件夹?

基础方法:下载单个文件

若只需下载单个文件,可直接使用FTP命令:

ftp -s:commands.txt

其中commands.txt内容示例:

open ftp.example.com  # FTP服务器地址
username              # 替换为实际用户名
password              # 替换为实际密码
binary                # 二进制传输模式(适用于非文本文件)
get remote_file.txt local_file.txt  # 下载文件
bye

下载整个文件夹(无子目录)

FTP命令本身不支持递归下载,但可通过以下步骤下载目标文件夹内所有文件(不含子文件夹):

  1. 创建脚本文件 ftp_commands.txt
    open ftp.example.com
    username
    password
    binary
    cd /remote_folder  # 远程目标文件夹路径
    lcd C:\local_folder  # 本地保存路径
    prompt             # 关闭交互提示(避免逐个文件确认)
    mget *             # 下载所有文件
    bye
  2. 执行脚本
    ftp -n -s:ftp_commands.txt

    参数说明

    • -n:禁用自动登录(脚本中已包含登录信息)。
    • -s:指定命令脚本文件。

递归下载整个目录(含子文件夹)

需借助批处理循环实现递归下载:

  1. 生成文件列表
    创建list_files.txt获取远程目录结构:

    open ftp.example.com
    username
    password
    cd /remote_folder
    ls -R files_list.txt  # 生成文件列表(UNIX风格FTP需支持ls -R)
    bye
    ftp -n -s:list_files.txt
  2. 解析列表并下载
    创建批处理脚本download.bat

    @echo off
    set FTP_SCRIPT=ftp_commands.tmp
    set REMOTE_DIR=/remote_folder
    set LOCAL_DIR=C:\local_folder
    for /f "tokens=*" %%i in (files_list.txt) do (
       echo open ftp.example.com > %FTP_SCRIPT%
       echo username >> %FTP_SCRIPT%
       echo password >> %FTP_SCRIPT%
       echo binary >> %FTP_SCRIPT%
       echo cd %REMOTE_DIR%/%%i >> %FTP_SCRIPT% 2>nul
       echo lcd %LOCAL_DIR%\%%i >> %FTP_SCRIPT%
       echo mget * >> %FTP_SCRIPT%
       echo bye >> %FTP_SCRIPT%
       ftp -n -s:%FTP_SCRIPT%
    )
    del %FTP_SCRIPT%

    注意

    • 此方法依赖FTP服务器返回的目录列表格式(需提前测试ls -R输出)。
    • 复杂目录结构建议使用专业工具(见下文替代方案)。

注意事项与局限

  1. 密码安全
    脚本中密码为明文,存在安全风险,建议:

    • 使用临时脚本并立即删除。
    • 改用SFTP/FTPS等加密协议(需第三方工具支持)。
  2. FTP命令限制

    • 不支持断点续传、多线程下载。
    • 文件名含空格或特殊字符时可能出错。
    • 目录结构复杂时递归脚本可能失败。
  3. 替代方案推荐

    • WinSCP:图形化界面或脚本支持递归下载(示例脚本):
      winscp.com /command "open ftp://username:password@ftp.example.com/" "get -r /remote_folder C:\local_folder\" "exit"
    • cURL:命令行工具支持递归下载:
      curl -u username:password --ftp-create-dirs -O "ftp://ftp.example.com/remote_folder/*" -o "C:\local_folder/"
    • wget:需安装后使用:
      wget -r --ftp-user=username --ftp-password=password ftp://ftp.example.com/remote_folder/

  • 简单需求:用mget *下载无子目录的文件夹。
  • 复杂需求:优先选用WinSCPcURLwget等工具支持递归下载。
  • 安全提示:避免在共享环境中存储明文密码,敏感操作后及时删除脚本。

引用说明
本文提及的ftp.exe为Windows内置工具,WinSCP可在winscp.net获取,cURL官网为curl.se,wget需通过GnuWin32安装。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6964.html

(0)
酷番叔酷番叔
上一篇 2025年7月10日 12:20
下一篇 2025年7月10日 12:51

相关推荐

  • 国内数据标注公司哪家专业?揭秘行业佼佼者!

    倍赛、云测数据等头部企业技术成熟、服务专业,是国内数据标注行业的领军者。

    2026年2月23日
    7100
  • 命令行复制粘贴,跨平台高效技巧?

    Windows系统命令提示符(CMD)复制:鼠标选中文本 → 按 Enter 键(自动复制到剪贴板)粘贴:右键单击(或按 Ctrl + V)纯键盘操作:启用快速编辑模式:右键标题栏 → 属性 → 勾选”快速编辑模式”复制:用 Shift + 方向键 选中文本 → 按 Enter粘贴:Ctrl + VPowerS……

    2025年7月29日
    19200
  • c 怎么执行shell命令

    C语言中,可使用system函数执行shell命令,如system(“ls -l”);。

    2025年8月17日
    17700
  • 埃微消息推送服务异常,原因是什么?

    埃微消息推送服务异常部分用户反映埃微消息推送服务出现异常,表现为无法及时接收应用通知、推送延迟或推送内容缺失等问题,针对这一情况,埃微技术团队已第一时间介入排查,并发布了相关说明及解决方案,以下为事件详情、影响范围、解决措施及用户建议的详细梳理,事件概述与影响范围埃微消息推送服务异常主要涉及智能手表、手环等可穿……

    2025年12月11日
    11800
  • 如何用命令查询数据库中的表?

    在数据库管理与开发中,查询表是最基础且高频的操作,无论是查看数据结构、提取业务数据还是排查问题,都离不开对表的命令查询,不同数据库系统(如MySQL、PostgreSQL、SQL Server、Oracle等)的命令语法略有差异,但核心逻辑相通,本文将详细讲解如何通过命令查询数据库中的表,涵盖基础查询、进阶操作……

    2025年8月22日
    15600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信