FTP file exist problem

  • Hey ich hab probiert ein kleines script zu machen das an einen ftp server conected und fragt ob ein file da ist, wenn es da ist kommt eine msg box wenn nicht kommt auch eine. Leider hab ich überhaupt keine ahnung wie ich bei Ftp ein if fileexist einbauen soll könntet ihr mir das zeigen wie das geht :). Kenn mich da leider überhaupt nicht aus mit Ftp:


  • Hi @hunterla
    du musst also nicht irgendwas, irgendwo auf dem Server suchen, sondern du weißt, wo die Datei liegt und wie sie heißt?
    Dann brauchst du doch nur irgendetwas mit der Datei ausprobieren, was entweder klappt oder nicht und damit eine Fehlermeldung ausgibt.
    Wenn die Datei nicht exitsiert, dann geben dir viele FTP Befehle ja einen @error-Wert zurück (_FTP_FileGet, FTP_FileGetSize, _FTP_FileRead)

    Grüße autoiter

  • Leider weiß ich nicht wo und wie ich das einbaue :( und wie... hab im internet natürlich probiert zu suchen aber leider nixs gefunden was mir geholfen hat. Das file ist direkt im ftp ordner da gibt es keine unterordner. Ich weiß halt wirklich nicht wie ichs schreiben soll :( oder gar wie ich da einen dateipfad angebe :( bitteeeeeee hilf mir :D

  • Hast du in der Hilfe mal nach einem der genannten Befehle gesucht? Da gibt es ja jeweils ein Beispiel ;)
    Mach das erst einmal. Wenn du dazu dann wirklich noch Fragen hast, kannst du sie ja immer noch stellen.

    Grüße autoiter

  • Okay,
    eine Viertelstunde lang hast du gefühlte zwei Stunden lang daran gesessen.. :P
    Schau dir doch mal folgendes Skript an. Warum hast du das nicht selbst hinbekommen?

    Das ist dein Skript. Hier habe ich nur dein If FileExists gegen zwei Zeilen getauscht..

    Ich weiß nicht einmal ob das ein adäquater Test ist. Immerhin ist das keine echte Prüfung auf Existenz einer Datei.. Sicher kann dir ein anderer besser helfen.

    Grüße autoiter

  • mit den gefühlten 2 stunden meinte ich das ich vorher im internet immer schau ob ich beiträge finde die mir helfen und auch bei autoit unter den hilfen nachschaue aber alles versteh ich dann auch ned immer, erst danach schreib ich einen beitrag.

    dein script hat funktioniert hab nur dein __FTP_FileGetSize durch _FTP_FileDelete ersetzt damit ich seh ob er es auch wirklich findet und löscht das geht alles wunderbar findet die datei löscht sie. Leider hab ich bis jz noch herrausgefunden wie ich das in eine IF schleife einbauen kann(wie bei if file exist then ...).


    Trozdem vielen dank :)

  • dein script hat funktioniert hab nur dein __FTP_FileGetSize durch _FTP_FileDelete ersetzt damit ich seh ob er es auch wirklich findet und löscht das geht alles wunderbar findet die datei löscht sie.

    Warum fragst du nach _FTP_FileGetSize wenn du tatsächlich Hilfe zu _FTP_FileDelete benötigst ?(

  • Nein, das hat hunterla nicht getan.

    Er hat nur etwas gewollt, um zu sehen, ob eine Datei auf einem FTP Server vorhanden ist. Ich habe ihm, weil ich es nicht besser wusste, einige Befehle vorgeschlagen.

    Weil ich in meinem Bsp. aber kein Else definiert hatte und er immer mit vorhandener Datei getestet hat, hat er erst eine Reaktion gesehen, als er _FTP_FileDelete benutzt hat. War ein schlecht gemachtes Bsp. von mir.

    Grüße autoiter

  • Nein, das hat hunterla nicht getan.

    Er hat nur etwas gewollt, um zu sehen, ob eine Datei auf einem FTP Server vorhanden ist. Ich habe ihm, weil ich es nicht besser wusste, einige Befehle vorgeschlagen.

    Bin zwar nicht der Papst aber:

    Leider hab ich überhaupt keine ahnung wie ich bei Ftp ein if fileexist einbauen soll könntet ihr mir das zeigen wie das geht :)

    ich lese hier eindeutig: 'if fileexist' und 'FTP' von File löschen lese ich hingegen garnichts.

    also ein eindeutiges xy-Problem wie @Andy sagen würde.

  • Hi @hunterla
    du musst also nicht irgendwas, irgendwo auf dem Server suchen, sondern du weißt, wo die Datei liegt und wie sie heißt?
    Dann brauchst du doch nur irgendetwas mit der Datei ausprobieren, was entweder klappt oder nicht und damit eine Fehlermeldung ausgibt.
    Wenn die Datei nicht exitsiert, dann geben dir viele FTP Befehle ja einen @error-Wert zurück (_FTP_FileGet, FTP_FileGetSize, _FTP_FileRead)

    Das ist der zweite Beitrag in diesem Thread, @autoBert,
    Das ist auf meinem Mist gewachsen, weil ich es nicht besser wusste. Und bevor du jetzt schreibst, aber wenn er wissen will, ob eine Datei existiert sollte er sie nicht löschen. Ja, denke ich auch, aber siehe nochmal den Beitrag 10 hier im Thread.

    Grüße autoiter

  • Wenn es natürlich nur drum geht die Datei zu löschen wenn sie existiert kann einem ziemlich egal sein ob sie existiert oder nicht, man löscht dann halt einfachmal und wenns nicht klappt war die Datei vermutlich nicht da. Ist aber auch dann keine 100% saubere Lösung, denn das Löschen könnte auch scheitern weil man keine Löschberechtigung hat, weil die Datei gerade gesperrt ist usw.
    Ergebnis wäre dann: Script denkt die Datei ist nicht da, in Wahrheit ist sie das aber sehr wohl und konnte nur nicht gelöscht werden. Evtl. ein Problem ;)

    Die wirklich korrekte Antwort auf die ursprüngliche Frage "Wie prüfe ich ob eine Datei auf einem FTP Server existiert?" ist ja wohl ganz offensichtlich die Funktion _FTP_ListToArray(). Mir ist wirklich nicht klar, warum man hier über all die anderen FTP Funktionen schreibt, wenn es doch eine Funktion gibt die alle Dateien des Serververzeichnisses auflisten kann.

    Eine Funktion ftpfileexists() ist schlichtweg nicht in der Standard UDF enthalten. Aber anhand der oben genannten Funktion kann man sich problemlos eine eigene Funktion mit identischem Verhalten wie fileexists schreiben.

    Dafür sollte man aber schon ein Mindestmaß an Autoit Kenntnissen besitzen und wenigstens wissen was eine If Bedingung, eine Schleife und ein Array ist, wie man Arrays durchsucht, was eine Funktion ist, wie man diese erstellt und was ein Rückgabewert ist. Ich befürchte aber das ist hier leider nicht der Fall. Nunja dann macht man halt einfach Copy&Paste, ersetzt harmlose Funktionen durch Löschfunktionen und hofft dass alles passt. :P

    Einmal editiert, zuletzt von misterspeed (9. Dezember 2016 um 21:09)

  • _FTP_File_ListToArray ist natürlich die einzige Funktion, die im mitgegebenen Verzeichnis wirklich die vorhandenen Dateien auflistet, um sie dann mit Array-Befehlen zu durchsuchen.
    Es bestehen hier offensichtlich wenig Kenntnisse.
    @autoBert und @misterspeed haben natürlich absolut recht. Fragen verbieten sich für Anfänger und als Profi muss man einen Thread auch nicht mehr lesen - man weiß sofort Bescheid. Daumen hoch an euch Profis.

    Grüße autoiter


  • @autoBert und @misterspeed haben natürlich absolut recht. Fragen verbieten sich für Anfänger und als Profi muss man einen Thread auch nicht mehr lesen - man weiß sofort Bescheid. Daumen hoch an euch Profis.

    Mir ist das ziemlich wurscht ob jemand Anfänger oder Profi ist. Wenn man etwas nicht weiß oder kann gibt es immer zwei Wege um das Problem zu lösen.

    Einen der Wege sieht man hier, man "schreit" einfach mal "bitteeeeeee hilf mir " oder verkündet traurig "sitze schon seit gefühlt 2 stunden dran " und bekommt dann eine Fertiglösung präsentiert die letztlich nichtmal die eigentliche Aufgabe erfüllt (Datei löschen wenn sie existiert). Das ist aber nicht deine Schuld, sondern die Schuld des Fragestellers, welcher die Aufgabe nicht ausreichend beschrieben hat. Auch wenn ich null Ahnung von Autoit habe sollte man doch meinen, dass ich zumindestens formulieren kann was ich erreichen möchte.

    Der andere Weg wäre, dass man nicht nur das Problem, sondern auch das Ziel vollständig beschreibt und jede auch noch so kleine Hilfestellung dankend annimmt und sich anhand der Tipps selbst weiterbildet und auch selbst eine Lösung erarbeitet. Abschließend präsentiert man seine Lösung und bittet um weitere wertvolle Tipps und Kritik um sich noch mehr Wissen von den Profis anzueignen.

    Unterschied verstanden? Verstanden was ich dem Threadersteller mit meinen Hinweisen zu "Mindestmaß an Autoit Kenntnissen" sagen wollte? Wenn er zur Kategorie 2 der Fragesteller gehören möchte wird er sich über all diese Grundlagen informieren und sich seine eigene FTPfileexist() Funktion schreiben und dann mit uns teilen. Wenn er weiterhin zu Kategorie 1 der Fragesteller gehören möchte wird er auch weiterhin mit Antworten wie meinen leben müssen und vielleicht eines Tages erkennen, dass er so nichts lernt.

  • und bekommt dann eine Fertiglösung präsentiert die letztlich nichtmal die eigentliche Aufgabe erfüllt (Datei löschen wenn sie existiert).

    Das weise ich von mir, denn das war nicht meine Idee. Ansonsten hast du wie meistens natürlich recht. Sorry für den Angriff.

    Grüße autoiter