FTP Array

  • Ich verstehe bei meinem Script nicht, warum das Array auch nach dem Löschen der Dateien auf dem FTP Server, keinen neuen Inhalt anzeigt?
    Ich dachte die Daten werde immer erneut eingelsen, wo liegt bitte mein Fehler?

    Danke für Hilfe :)

    [autoit]


    #include <FTPEx.au3>
    #include <Array.au3>
    for $t = 1 to 2
    Sleep(10000)
    $server = '192.168.110.129'
    $username = 'images'
    $pass = 'images'

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

    $Open = _FTP_Open('MyFTP Control')
    $Conn = _FTP_Connect($Open, $server, $username, $pass)
    _FTP_DirSetCurrent($conn,"images")
    $aFile = _FTP_ListToArrayEx($Conn, 2)
    _ArraySort($aFile, 0, 1, 0, 0)
    _ArrayDisplay($aFile)
    If $aFile[0][0] > 1 Then
    _FTP_FileDelete($Conn,$aFile[1][0])
    _FTP_FileDelete($Conn, $aFile[2][0])
    EndIf
    $Ftpc = _FTP_Close($Open)
    Next

    [/autoit]
  • Würde mich wundern wenn das so wäre du müsstest schon nach den löschen nochmal ein:

    [autoit]

    $aFile = _FTP_ListToArrayEx($Conn, 2)
    _ArraySort($aFile, 0, 1, 0, 0)
    _ArrayDisplay($aFile)

    [/autoit]

    machen damit dir das aktuell angezeigt wird haste bei jeden FTP Programm das er ein neues listen macht.

    Gruss DevFly

  • DevFly
    Ich habe das nun noch mit einem FileZillaserver ausprobiert, leider bringt auch das erneute einlesen des Filearrays keinen unterschied. Ich habe diese Funktion Filegetfirst zuvor 6 Monate laufen lassen, mir scheint es liegt an Windows. Das mit dem Array habe ich als Alternative geändert, leider ist es auf verschieden Rechner und FTP-Server immer das selber Ergebnis. Ist das nun ein Bug, oder mache ich was falsch?

  • Hallo kunstlust,

    wenn du dein Skript oft genug aufrufst hast du irgendwann auch alle Dateien gelöscht. In deinem derzeitigen Skript löscht du nur die beiden 1. Dateien. So sollten alle gelöscht werden:

    [autoit]

    #include <FTPEx.au3>
    #include <Array.au3>
    server = '192.168.110.129'
    $username = 'images'
    $pass = 'images'

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

    $Open = _FTP_Open('MyFTP Control')
    $Conn = _FTP_Connect($Open, $server, $username, $pass)
    _FTP_DirSetCurrent($Conn, "images")
    $aFile = _FTP_ListToArrayEx($Conn, 2)
    _ArraySort($aFile, 0, 1, 0, 0)
    _ArrayDisplay($aFile)
    For $u = 1 To $aFile[0][0]
    _FTP_FileDelete($Conn, $aFile[$i][0])
    Next
    $Ftpc = _FTP_Close($Open)

    [/autoit]

    Noch ungetestet sollte aber funktionieren,

    mfg autoBert

  • Kann ich bei meinem FTP Server ebenfalls nachvollziehen. Ich vermute das Ergebnis wird irgendwo gecached (vergleichbar mit inetget wenn man das flag für erneutes laden vom remote ort nicht setzt). Vielleicht kann Prog@ndy da ja was zu sagen, er scheint der UDF nach an der betreffenden Funktion beteilligt gewesen zu sein.

    autoBert:

    Ich glaube es ging nicht darum alle Dateien zu löschen, sondern in bestimmten Intervallen die Fileliste auf Veränderungen zu prüfen.

  • @ AutoBert
    Nein ich rufe die Daten immer Paarweise ab. Die Daten liegen auf einem Scanner, wo ich die Files per FTP abrufen. Es geht danach eine kleine Gui auf, die dem User fragt wo die PDF Datei hin soll. Das zweite File ist ein JPG, welches ich als Vorschau nutze.
    Das Problem liegt nicht in der Anzahl, sondern dass die Files nach dem löschen auch bei zweiten mal in der Schleife zu sehen sind. Es liegt auf dem FTP Server 00000.pdf und 00000.jpg, ich lösche diese. Ich schauen per Filezilla nach, die Files sind nicht mehr da, die Schleife läuft erneut durch und das Array zeigt mir erneut die beiden Files an, obwohl nichts mehr auf dem FTP Server liegt, somit ist es schwer für mich die Daten weiter zu verarbeiten.
    Das Script ist auch nur ein einfache Beispiel, was aber den Effekt zeigt, darum ging es mir.

  • misterspeed
    Das hast du dazwischen gequetscht... 8| , war gerade dabei an AutoBert zu schreiben
    Ja genauso meine ich es, schön das der Fehler auch bei dir zu sehen ist, das lässt hoffen, das wir Ihn finden.

  • Ich habe eine Lösung gefunden, welche mir aber nicht so rech gefällt. :evil:

    [autoit]


    Run("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8")

    [/autoit]

    Damit wir der IE Cache gelöscht und das Problem tritt nicht mehr auf. Ich habe es unter Internet Explorer Cache leeren gefunden.

    Sonst noch jemand eine bessere Idee?