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

相关推荐

  • vs怎么运命令行行参数

    VS中,可通过项目属性配置或在入口函数参数中接收命令行参数,如`

    2025年8月15日
    9500
  • 面对层出不穷的新型网络攻击,你的安全加固平台真的能抵御风险吗?

    在数字化浪潮席卷全球的今天,企业与组织的业务运营、数据存储和客户交互都高度依赖于复杂的信息技术系统,这种依赖性也带来了前所未有的安全挑战,网络攻击手段日趋复杂化和自动化,传统的、被动的安全防御体系已难以应对,在此背景下,安全加固平台作为一种主动式、系统化的安全解决方案,正逐渐成为现代网络安全架构中不可或缺的核心……

    2025年11月20日
    6000
  • 安全光栅ping后显示一般故障,是什么原因?如何排查处理?

    安全光栅作为工业自动化领域的关键安全防护设备,通过发射和接收红外光束形成防护屏障,当物体进入光束区域时触发停机信号,有效避免机械伤害事故,在日常运维中,工程师常通过“ping”操作测试设备网络通信状态,若结果显示“一般故障”,需及时排查以保障系统安全稳定运行,故障现象表现当安全光栅ping测试返回“一般故障”时……

    2025年11月12日
    6700
  • 如何轻松解决常见问题?

    通过系统菜单实现功能操作是最通用便捷的方式,用户无需记忆复杂命令,只需在直观的菜单界面中导航选择所需选项即可完成各项任务,适用于各类用户和操作系统。

    2025年6月22日
    11100
  • 怎么用命令行编译svn代码

    命令行编译SVN代码,首先检出代码(svn checkout),然后导航到代码目录,

    2025年8月16日
    9600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信