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 的答案和其他一些更好)。

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
添加回答
举报