Bat脚本中,如何上传一整个目录及里面的的文件至ftp

最近在研究dos命令,制作bat脚本。遇到了一个瓶颈。在打开ftp后,由于本地文件已经分好类,如果用mput上传的话,会将所有目录中的文件混放在ftp内。所以想问一下如何把本地分好类的文件夹,一整个上传?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7569191
  • 你也可以参考下这篇文章:【FTP+BAT】Windows 脚本自动备份,通过FTP传输到其他服务器,并设置定时任务【详细】
  • 除此之外, 这篇博客: 工作笔记1——利用bat脚本实现批量上传文件到ftp服务器中的 注意 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    首先,我们可以使用ftp命令行工具来上传整个目录及其文件至FTP服务器。以下是一个示例的批处理脚本,用于实现这个功能:

    @echo off
    setlocal
    
    set "ftpServer=your_ftp_server"  // 替换为你的FTP服务器地址
    set "ftpUsername=your_ftp_username"  // 替换为你的FTP用户名
    set "ftpPassword=your_ftp_password"  // 替换为你的FTP密码
    set "localDirectory=your_local_directory"  // 替换为你要上传的本地目录路径
    set "remoteDirectory=your_remote_directory"  // 替换为你要上传至FTP的远程目录路径
    
    echo open %ftpServer%> ftpscript.txt
    echo %ftpUsername%>> ftpscript.txt
    echo %ftpPassword%>> ftpscript.txt
    echo lcd %localDirectory%>> ftpscript.txt
    echo cd %remoteDirectory%>> ftpscript.txt
    echo binary>> ftpscript.txt
    echo prompt n>> ftpscript.txt
    echo mput *.*>> ftpscript.txt
    echo quit>> ftpscript.txt
    
    ftp -s:ftpscript.txt
    del ftpscript.txt
    
    endlocal
    

    上述批处理脚本中,需要你替换以下变量的值: - ftpServer:你的FTP服务器地址 - ftpUsername:你的FTP用户名 - ftpPassword:你的FTP密码 - localDirectory:你要上传的本地目录路径 - remoteDirectory:你要上传至FTP的远程目录路径

    请确保你已将以上脚本中的这些变量替换为正确的值。

    此脚本使用了一个临时文件ftpscript.txt来存储FTP命令。它首先打开FTP连接,然后输入用户名和密码进行认证。之后,将本地目录设置为当前工作目录,将远程目录设置为FTP服务器上的目标目录。最后,使用mput命令上传所有文件至FTP服务器。上传完成后,关闭FTP连接并删除临时文件。

    请注意,此脚本假设你已经安装了ftp命令行工具,并且将其添加到了系统的环境变量中。如果没有安装或配置ftp命令,需要先进行安装和配置操作。

    希望这个解决方案能够帮助到你。如果还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

使用mget和mput命令可以上传和下载整个文件夹。

参考ChatGPT的回答
如果您想一次性将本地分好类的文件夹整个上传到FTP服务器上,可以使用FTP客户端的mput命令的递归选项。这样,mput命令会将整个文件夹及其子文件夹上传到FTP服务器,而不会混放在一起。

具体步骤如下:

  1. 打开FTP客户端并连接到FTP服务器。

  2. 使用lcd命令设置本地文件夹的目录,例如:lcd C:\path\to\your\local\folder

  3. 使用cd命令切换到FTP服务器上要上传的目标文件夹,例如:cd /path/to/your/ftp/folder

  4. 使用mput命令上传整个文件夹及其子文件夹,带上递归选项-r,例如:mput -r *

请注意,在使用mput -r *上传文件夹时,FTP客户端会将本地文件夹及其子文件夹的内容一起上传到FTP服务器指定的目标文件夹内,而不会混放在一起。确保您已经选择了正确的目标文件夹,以免覆盖原有的文件。

另外,不同的FTP客户端可能略有不同的命令语法,请查阅您使用的FTP客户端的文档或帮助手册,以确保正确使用mput命令的递归选项。