无法在批处理脚本中通过FTP上传目录中的文件和文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在批处理脚本中通过FTP上传目录中的文件和文件夹相关的知识,希望对你有一定的参考价值。

我有几个文件夹我希望通过FTP上传到服务器。

这是文件夹结构:

build >
    fonts >
        - font1.ttf
        - font2.ttf
    images >
        - img1.png
        - img2.png
    javascripts >
        - script.js
    stylesheets >
        - style.css
    index.html

我有fileup.bat

@echo off
echo user USERNAME> ftpcmd.dat
echo PASSWORD>> ftpcmd.dat
echo prompt>> ftpcmd.dat

echo cd %1>> ftpcmd.dat
echo lcd %2>>ftpcmd.dat
echo mput *.*>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat 123.456.78.9
del ftpcmd.dat
pause

run_ftp.bat是单行,public_html/是服务器上文件的目的地,C:Webuild是文件在我的PC上的位置:

fileup public_html/ C:Webuild

run_ftp.bat位于C: Web,fileup.bat位于C: Windows,因此它出现在PATH中,我可以在cmd中运行文件。

当我运行run_ftp.bat时,上传到服务器的唯一文件位于/ build的根目录中,因此只上传index.html。控制台记录:Error opening local file fonts.为/ build中的每个文件夹。

这是日志:

230 OK. Current restricted directory is /
ftp> prompt
Interactive mode Off .
ftp> cd public_html/
250 OK. Current directory is /public_html
ftp> lcd C:Webuild
Local directory now C:Webuild.
ftp> mput *.*
Error opening local file fonts.
Error opening local file images.
200 PORT command successful
150 Connecting to port 57128
226-File successfully transferred
226 0.142 seconds (measured here), 1.78 Mbytes per second
ftp: 265174 bytes sent in 0.07Seconds 3682.97Kbytes/sec.
Error opening local file javascripts.
Error opening local file stylesheets.
200 PORT command successful
150 Connecting to port 57129
226-File successfully transferred
226 0.033 seconds (measured here), 36.90 Kbytes per second
ftp: 1229 bytes sent in 0.01Seconds 102.42Kbytes/sec.
ftp> quit
221-Goodbye. You uploaded 261 and downloaded 0 kbytes.
221 Logout.
Press any key to continue . . .

当我运行.bat文件时,没有任何文件是build文件夹中的文件夹正在使用中,我有点难过为什么没有上传任何文件夹。我试过用bin替换ascii,但它什么也没做。

答案

Windows命令行ftp.exe客户端不支持递归操作。

您必须使用第三方FTP客户端。


例如,使用WinSCP,您可以使用:

winscp.com /log=ftp.log /command ^
    "open ftp://USERNAME:PASSWORD@ftp.example.com/" ^
    "mput ""%2*"" ""%1""" ^
    "exit"

有一个converting Windows ftp.exe script to WinSCP script指南。虽然更容易有WinSCP GUI generate the script or batch file for you

(我是WinSCP的作者)

以上是关于无法在批处理脚本中通过FTP上传目录中的文件和文件夹的主要内容,如果未能解决你的问题,请参考以下文章

使用 bash 脚本批量重命名 FTP 服务器上的文件

批量文件将目录中的所有文件上传到FTP

PHP中上传文件的临时目录的问题

Java中的文件上传和下载

如何在 Django 中通过 PUT 请求处理文件上传?

linux - 监视目录中的新文件,然后运行脚本