_FTP_DirDelete() Problem

  • Hallo alle miteinander,

    ich bin gerade dabei einen FTP-Client zu schreiben und bekomme es nicht hin, dass dieser einen Ordner auf meinem FTP-Server löscht.

    Infos:
    - Verwendeter Befehl: _FTP_DirDelete() --> Parameter sind richtig angegeben
    - Filezilla-Server Output: 500 Directory not empty
    - Benutzerdaten sind richtig, da ich ja Uploaden kann
    - Ich bin Admin ( ist ja mein Server ;) )
    -> Ich darf lesen/schreiben/löschen/erstellen

    Hier mein Script:
    ( Die Benutzerdaten stehen in der Ini, die ausgelesen wird. Diese lade ich jedoch nicht hoch ;) )

    Spoiler anzeigen
    [autoit]

    #Include <FTPEx.au3>
    if NOT FileExists(@ScriptDir & "\config.ini") Then
    Exit
    EndIf
    $SourceDir = IniRead(@ScriptDir & "\config.ini", "Config", "Source_DIR", "")
    $FTPDir = IniRead(@ScriptDir & "\config.ini", "Config", "FTP_DIR", "")
    $IP = IniRead(@ScriptDir & "\config.ini", "Config", "Server_IP", "")
    $Username = IniRead(@ScriptDir & "\config.ini", "Config", "Benutzername", "")
    $Password = IniRead(@ScriptDir & "\config.ini", "Config", "Passwort", "")
    $FTP_Open = 0
    $FTP_Connect = 0
    while $FTP_Open = 0
    $FTP_Open = _FTP_Open("FTP Server")
    sleep(2000)
    WEnd
    while $FTP_Connect = 0
    $FTP_Connect = _FTP_Connect($FTP_Open, $IP, $Username, $Password)
    sleep(2000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $FTP_PutDir = 0
    while $FTP_PutDir = 0
    _FTP_DirDelete($FTP_Connect, $FTPDir); RÜCKGABEWERT: 0
    $FTP_PutDir = _FTP_DirPutContents($FTP_Connect, $SourceDir, $FTPDir, 1)
    Sleep(1000)
    WEnd
    Sleep(60000)
    WEnd

    [/autoit]

    Ich hoffe jemand kann mir helfen.

    mfg
    Hauke

  • Hallo,

    schon klar, aber das ganze soll für nen Freund sein, der einen Ordner mit nem FTP-Server synchronisieren möchte.
    Damit er also nicht jede Minute auf seinem FTP Server den Ordner löschen muss, soll das programm das machen.

    mfg
    Hauke

  • Probier mal das:

    Spoiler anzeigen
    [autoit]

    #Include <FTPEx.au3>
    if NOT FileExists(@ScriptDir & "\config.ini") Then
    Exit
    EndIf
    $SourceDir = IniRead(@ScriptDir & "\config.ini", "Config", "Source_DIR", "")
    $FTPDir = IniRead(@ScriptDir & "\config.ini", "Config", "FTP_DIR", "")
    $IP = IniRead(@ScriptDir & "\config.ini", "Config", "Server_IP", "")
    $Username = IniRead(@ScriptDir & "\config.ini", "Config", "Benutzername", "")
    $Password = IniRead(@ScriptDir & "\config.ini", "Config", "Passwort", "")
    $FTP_Open = 0
    $FTP_Connect = 0
    while $FTP_Open = 0
    $FTP_Open = _FTP_Open("FTP Server")
    sleep(2000)
    WEnd
    while $FTP_Connect = 0
    $FTP_Connect = _FTP_Connect($FTP_Open, $IP, $Username, $Password)
    sleep(2000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $FTP_PutDir = 0
    while $FTP_PutDir = 0
    _FTP_DirSetCurrent($FTP_Connect,$FTPDir) ;## Remote-Verzeichnis setzen für _FTP_ListToArray
    $aList = _FTP_ListToArray($FTP_Connect) ;## Liste der Dateien in ein Array schreiben
    For $i = 1 To UBound($aList)-1 ;## Die Dateien einzeln löschen
    _FTP_FileDelete($FTP_Connect,$aList[$i])
    Sleep(3000) ;## ggf. die Zeit an Dateigröße anpassen
    Next
    ;-- Falls DirDelete fehlschlägt, am besten mit _FTP_DirSetCurrent einen Oberornder (ggf. Root-Verzeichnis) setzen!
    _FTP_DirDelete($FTP_Connect, $FTPDir); RÜCKGABEWERT: 0
    $FTP_PutDir = _FTP_DirPutContents($FTP_Connect, $SourceDir, $FTPDir, 1)
    Sleep(1000)
    WEnd
    Sleep(60000)
    WEnd

    [/autoit]


    Ist ungtestet, sollte aber soweit funktionieren.

    Mfg

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski


  • Aber nur wenn der Ordner keine Unterordner enthält.

    mfg autoBert


    Selbst wenn, das wird hauke dann wohl selbst hinbekommen. ;)

    Das war nur mal schnell ein Beispiel wie man es lösen könnte.

    Mfg

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Hallo,

    danke für dein Beispielscript, aber darauf bin ich auch gekommen. Mit den unterordnern ist es zwar ein bisschen Arbeit, aber es geht schon ( fast ;) ).

    mfg
    Hauke


    Sehr gut, wenn es jetzt schon fast funktioniert.

    Das mit Unterordner sollte nicht allzu schwer sein, ist ja eigentlich nur Verschachtelung :D

    Mfg

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski