#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <FTPEx.au3>
#include <Array.au3>
#include <Array.au3>
#include "FTP_FileList_RecursivWA3.au3"

Opt('MustDeclareVars', 1)

Global $iDebug = 1
Global $aResult[1]
Global $s_ServerName = 'ftp.csx.cam.ac.uk' ;das ist ein real existierender Server
Global $s_Usersname = ''
Global $s_Password = ''
Global $i_Passive = 0 ;aktive Verbindung nutzen wenn bei anderen Server Probleme dann auch mit 1 für passive Verbindung testen
Global $errOpen, $errFTP
Global $sLocal = @ScriptDir & '\temp', $s_LocalFile
If $iDebug Then FileDelete($sLocal)
Global $iStart = TimerInit(), $iEnd ;kann auskommenteirt werden
ToolTip('Please wait...') ;kann auskommenteirt werden

Global $l_FTPSession, $l_InternetSession = _FTP_Open('AuoItZilla') ;Öffnet eine FTP Sitzung
$errOpen = @error
If Not @error Then
	$l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Usersname, $s_Password, $i_Passive) ;Verbindet zu einem FTP Server
	$errFTP = @error
	If Not @error Then
		_FTP_FileList_Rekursiv($l_FTPSession, $aResult, "/", False, 3, $iDebug) ;<======= anpassen Remotepfad der inkl. aller Unerordner heruntergeladen werden soll
		;nur Dateien urückgeben Rekursionstiefe 3 und Debuginfos in Konsole
		If $aResult[0] > 0 Then
			$iEnd = TimerDiff($iStart) ;kann auskommenteirt werden
			_ArrayDisplay($aResult) ;kann auskommenteirt werden
			ToolTip('') ;kann auskommenteirt werden
			MsgBox(0, "Zeit für Verzeichnisinformationen:", $iEnd, 5) ;kann auskommenteirt werden
			For $i = 1 To $aResult[0]
				$s_LocalFile = $sLocal & "\" & StringTrimLeft($aResult[$i], 1)
				$s_LocalFile = StringReplace(StringReplace($s_LocalFile, "/", "\"), "\\", "\")
				_createLocalDirIfNecessary($s_LocalFile)
				If $iDebug Then ConsoleWrite($aResult[$i] & ' ===> ' & $s_LocalFile & @TAB)
				If _FTP_FileGet($l_FTPSession, $aResult[$i], $s_LocalFile) Then
					If $iDebug Then ConsoleWrite("erfolgreich " & @CRLF)
				Else
					If $iDebug Then ConsoleWrite("fehlgeschlagen ")
					If _FTP_DirSetCurrent($l_FTPSession, $aResult[$i]) And $iDebug Then ConsoleWrite(" da ein Mountpoint ")
					If $iDebug Then ConsoleWrite(@CRLF)
				EndIf
			Next
		Else
			ConsoleWrite("Keine Dateien gefunden" & @CRLF)
		EndIf
	Else
		MsgBox(0, "Connect", "fehlgeschlagen")
		ConsoleWrite("Connect: " & " " & $errFTP & @CRLF)
	EndIf
Else
	MsgBox(0, "Open", "fehlgeschlagen")
	ConsoleWrite("Open " & " " & $errOpen & @CRLF)
EndIf
_FTP_Close($l_InternetSession)
