Hot Hot Hotfolder?

  • Hallo Peter S. Taler

    Deine Beobachtung gilt allgemein für Event-Funktionen. Auf den Hinweis, dass die Event-Funktionen schnell verlassen werden sollen und dort keine blockierende Funktionen wie MsgBox oder _Arraydisplay verwendet werden sollen, stößt man eigentlich immer (denke etwa einfach an ein GUI-Event wie das Auswerten von Klicks in einer Listview).

    Grüße autoiter

  • autoiter

    Ja, ich hatte es gelesen. Mir war schon klar, worauf das hinausläuft, der Event will seine Nachricht eben "schlagartig" los werden. Nun hatten mich die Konseuenzen interesiert. Die MSGBox z.b funktioniert mit beschriebenen Konseuenzen. Array Dispaly bekommt nichteinmal das hin... Aber das habe ich ja schon in #20 beschrieben.

    Da ich den Ordner für pdf Verarbeitung, z.T. Dokumentumwandlung usw. benutzen möchte ist es mir eben ein wenig unwohl - bei diesen Zenario. Zumal tatsächlich keines von den Dokumenten im Datengrab verschwinden darf. Und irgendwie fügt sich das ganze noch nicht.

    Aso Danke für Euren "Beistand"

    Nehme gerne weitere Vorschläge an.

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Naja, du könntest das Ganze aufteilen in ein Skript, dass Nichts macht als auf neue PDF zu warten, diese in deinen "Bearbeiten-Ordner" verschiebt und dann ein anderes Skript startet, dass die jeweiligen Dateien bearbeitet.

    Ansonsten bleib einfach bei deiner Schleife. Alle x-Sekunden FileFindFirstFile und wenn kein Fehler FileFindNextFile verursacht doch keine wahrnehmbare Last. Dann brauchst du dir auch keine komplizierten Konstrukte ausdenken und kannst auch keine Events verpassen..

    Grüße autoiter

  • Danke,

    auf genau die Idee bin ich - nach Schreiben von #22 auch gekommen :). Ich wollte eigentlich tatsächlich im Ursprung etwas in Richtung File exist / Find File first schreiben. Dann kam mir die Idee - dass das fast schon zu einfach ist --> dieser Thread. Der Hinweis auf schlafende Festplatten und permanenten Spinn Up hat mich dann verunsichert -- kann z.Z. nicht beurteilen ob das auf einem Server überhaupt ein Problem ist. Habe mich dann mit den Eventschleifen auseinandergesetzt -- und war nicht glücklich. Aber die Beiträge regen mich entschieden zum Nachdenken an. Nun habe ich tatsächlich entschieden, den Event zu nehmen - aber es in zwei Programme zu verpacken. Das eine überwacht den Ordner das andere wird im Eventfall aufgerufen - und macht dann die "Drecksarbeit". Damit da nichts schiefgeht - kopiere ich die Dateien in ein Temp Verzeichnis.

    Das klingt für mich vielversprechend. Wenn es keine Einwände wegen groben Strukturfehler gibt --> Closed

    Danke an alle Helfer

    Gruß aus dem extrem windigen Süden

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Oscar ich brauche gerade sowas wie du hier zur verfügung gestellt hast, habe nur eine frage dazu, warum wird die geänderte datei 2mal hintereinander angezeigt, gibt es da einen weg es nur einmal anzeigen zu lassen, ich möchte gerne das script nutzen um ein event auzulösen in meinem script und wenn es das 2 mal auslöst, wäre ärgerlich

    Danke

    • Offizieller Beitrag

    warum wird die geänderte datei 2mal hintereinander angezeigt

    Sie wird 2 mal angezeigt, weil ein reinkopieren in das Verzeichnis eben 2 Events auslöst (Create und Update).

    Wenn Du die Datei nur einmal in dem Listview haben willst, musst Du Dich für ein Event entscheiden (If-Abfrage mit Event in lParam).

  • OK danke und noch was, was muss ich einstellen, dass nur eine spezielle Datei überwacht wird. Ist das mit der Methode überhaupt möglich?

    Ich habe eine inidatei, die mit neuen Daten gefüllt wird, wird dieser Inhalt geändert, soll der Inhalt ausgegeben werden,

    • Offizieller Beitrag

    Ich habe eine inidatei, die mit neuen Daten gefüllt wird, wird dieser Inhalt geändert, soll der Inhalt ausgegeben werden

    Ja, das ist möglich:

  • Eine winzige Kleinigkeit am Rande bzgl. : if StringRight($sNotifyDir, 1) <> '\' Then $sNotifyDir &= '\'

    Ich verwende zunehmend _WinAPI_PathAddBackslash (falls ich daran denke ;)), also :

    AutoIt
    #include <WinAPIShPath.au3>
    ConsoleWrite(" => " & @ScriptDir & @CRLF)
    ConsoleWrite(" => " & _WinAPI_PathAddBackslash(@ScriptDir) & @CRLF)
    ConsoleWrite(" => " & _WinAPI_PathAddBackslash(@ScriptDir & '\') & @CRLF)

    Ob das ein weiteres #include rechtfertigt muss wohl jeder selbst entscheiden.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    • Offizieller Beitrag

    Ob das ein weiteres #include rechtfertigt muss wohl jeder selbst entscheiden.

    Dann mit RegEx, spart das Include:

    AutoIt
    Global $sNotifyDir1 = 'C:\bla\blub'
    Global $sNotifyDir2 = 'C:\bla\blub\'
    
    ConsoleWrite(StringRegExpReplace($sNotifyDir1, '\\*$', '') & '\' & @CRLF)
    ConsoleWrite(StringRegExpReplace($sNotifyDir2, '\\*$', '') & '\' & @CRLF)
  • Danke euch beiden vielmals


    das es doppelte Meldungen gibt, habe ich auch nachstellen können, die Datei lag in meinen Nextcloud Verzeichnis, deswegen wurde wohl eine weitere Benachrichtigung gesendet nachdem Sync Vorgang.
    im Arbeitsverzeichnis ist alles wie es soll