如何用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

相关推荐

  • 如何快速调出各系统命令行?

    不同操作系统均提供命令行工具:Windows使用命令提示符或PowerShell,macOS和Linux使用终端,各系统均可通过搜索功能或快捷键(如Windows键+R)快速启动相应工具。

    17分钟前
    000
  • 如何打开Win10/Win11命令提示符?

    Windows 10 和 11 提供多种进入命令提示符(CMD)的方法,包括搜索、运行对话框、开始菜单右键、文件资源管理器地址栏等,用户可根据当前情况选择最快捷高效的方式。

    2025年7月4日
    1100
  • 为什么问题频发?如何彻底解决?

    通过深入分析问题根源,制定针对性解决策略,有效消除隐患并预防复发。

    2025年6月27日
    900
  • iPad上如何用命令行提升效率?

    在iPad上安装终端应用,掌握命令行操作技巧,实现文件管理、远程服务器连接、代码编辑等任务,解锁平板电脑的进阶生产力,打造高效移动工作流。

    2025年6月24日
    1100
  • Linux终端如何进?6种方法全解析

    图形界面下进入终端(推荐新手)快捷键启动同时按 Ctrl + Alt + T(适用于Ubuntu、Debian、Fedora等大多数桌面环境),秒开终端窗口,菜单导航Ubuntu:点击左上角“活动” → 搜索栏输入terminal → 选择“终端”CentOS GNOME:顶部菜单栏“应用程序” → “系统工具……

    2025年7月9日
    800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信