为了账号安全,请及时绑定邮箱和手机立即绑定

递归上传目录(包含目录)到 FTP

递归上传目录(包含目录)到 FTP

qq_花开花谢_0 2021-11-16 15:34:10
我需要将包含其他目录的完整目录从 Windows PC 上传到 FTP。目前我正在使用 Windows 批处理文件将文件上传到 FTP:FTP -i -s:upload.ftp上传.ftp:open hostnameusernamePasswordpromptbincd pathonserv/pathpromptmput localpath/localfolder/*此代码只上传文件从服务器上的本地文件夹,但本地文件夹而不是文件夹。我可以使用任何建议。我愿意将语言从 Windows 批处理文件更改为 Python。此外,我在 Windows PC 上启用了 Linux 终端功能。如果代码无需任何额外下载即可运行,也欢迎使用 C++。安全不是很重要。目前我更喜欢速度而不是安全。我需要一个简单的脚本来将目录(其中包含目录)递归上传到具有用户名和密码的 FTP。Windows 也是必须的!我不希望有超过 1 个可下载的插件,但即使它有但工作,我也可以接受。
查看完整描述

2 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

只需使用任何其他 Windows 命令行 FTP 客户端即可。大多数支持递归传输。

例如对于WinSCP FTP 客户端,您可以使用以下批处理文件:

winscp.com /ini=nul /log=upload.log /command ^
    "open ftp://username:password@hostname/" ^
    "put C:\localpath\localfolder\* /pathonserv/path/" ^
    "exit"

WinSCP GUI 甚至可以为您生成批处理文件模板

还有一个将Windows FTP 脚本转换为 WinSCP的指南(并不是在这个微不足道的情况下真的需要它)。

(我是 WinSCP 的作者)


如果您想采用 Python 方式,请检查使用 Python 脚本将文件夹从本地系统上传到 FTP(忽略@monkut 接受的答案,@Edgard 的答案和其他一些更好)。


查看完整回答
反对 回复 2021-11-16
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

这将是 Autoit 解决方案。


;ftp- Upload


#include <Array.au3>

#include <File.au3>

#include <MsgBoxConstants.au3>

#include <FTPEx.au3>


$initialPath = 'c:\Users\xxx\Downloads\'


$fileStructure = _FileListToArrayRec($initialPath, '*', $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT, $FLTAR_FULLPATH)

;~ _ArrayDisplay($fileStructure)


_Example()


Func _Example()

    Local $sServer = '192.168.178.XXX'

    Local $sUsername = 'admin'

    Local $sPass = 'xxx'

    Local $Err, $sFTP_Message


    Local $hOpen = _FTP_Open('MyFTP Control')

    Local $hConn = _FTP_Connect($hOpen, $sServer, $sUsername, $sPass, 0, 21, $INTERNET_SERVICE_FTP, $INTERNET_FLAG_PASSIVE)

    If @error Then

        MsgBox($MB_SYSTEMMODAL, '_FTP_Connect', 'ERROR=' & @error)

    Else

        _FTP_GetLastResponseInfo($Err, $sFTP_Message)

        ConsoleWrite('$Err=' & $Err & '   $sFTP_Message:' & @CRLF & $sFTP_Message & @CRLF)

        ; do something ...

        _FTP_DirSetCurrent($hConn, '/ALL')

        _FTP_DirPutContents($hConn, $initialPath, '/ALL', 1)

        Sleep(100)

        _FTP_DirSetCurrent($hConn, '/ALL')

        Local $aFile = _FTP_ListToArray($hConn, 0)

        _ArrayDisplay($aFile)

    EndIf

    Local $iFtpc = _FTP_Close($hConn)

    Local $iFtpo = _FTP_Close($hOpen)

EndFunc   ;==>_Example


查看完整回答
反对 回复 2021-11-16
  • 2 回答
  • 0 关注
  • 248 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号