Prüfung einer Datei

  • Hat das etwas mit dem Sleep 30 zutun?


    Also das glaube ich mal so nicht.

    Ich habe als erstes die Möglichkeit des EXIT (Gui schließen / Programm beenden) eingebau und danach abgefragt ob die Datei da ist. Auf das Ergebnis habe ich dann reagiert in dem ich den Button der sichtbar sein soll, auch sichtbar gebacht und den anderen dann unsichtbar. Mehr war das nicht.

    Aber ich glaube Du hast Dir das Script zusammengestellt, was gar nicht schlimm ist und dabei ist wohl das eine oder ander nicht ganz so gut gelaufen. Und / Oder Du hast zuviel gelöscht.

    So, nun ist aber die Lösung ja da. Mich würde interessieren, wie Du das umgesetzt hast mit "das Auslesen des Änderungsdatums". Reine Neugierde einer Frau halt. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo,

    nochmal zum Ursprung :)

    Wie kann Ich das Änderungsdatum und den neuen Eintrag überprüfen?

    Ich würde gern eine MSGBOX auslösen wenn sich das Datum ändert und in der letzten Zeile *Öffnung Tor 3* steht, wie kann ich das realisieren, es kommt sonst bei jedem Eintrag das Fenster.

    Vielen Dank vorab.

    • Offizieller Beitrag

    Wir doktern hier wieder an "Lösungen" rum, ohne das eigentliche Problem zu kennen.
    Wer legt denn die Datei an und schreibt den Eintrag "Öffnung Tor 3" dort hinein?

    Wozu überhaupt so eine Datei auf die Festplatte schreiben?
    Wenn auf dem Rechner sowieso das AutoIt-Script läuft, warum dann nicht einfach per TCP direkt eine Nachricht an das Script schicken?

  • Hallo,

    die Datei legt niemand an, die ist schon da.
    Sobald ein Ereignis stattfindet schreibt das Überwachungsprogramm (müsste ich nachsehen wie dies heisst) in die TXT die Einträge.
    Da das Programm aber keine Möglichkeit hat irgendwas anzuzeigen möchte ich dies gern übernehmen.

    Vielleicht noch einmal zum Verständnis:
    PC A hat das Programm wo alles aufgezeichnet wird
    PC A hat auch die Datei
    PC A soll das Fenster angezeigt bekommen

    Das ich dies bei mir "Überwachen" will ist nur Zusatz, für die Sache aber vollkommen unwichtig.

    • Offizieller Beitrag

    Ok, Du hast also keinen Zugriff auf das Überwachungsprogramm.
    Dann bleibt nur die Datei-Methode. Man sollte aber trotzdem nicht ständig auf die Datei zugreifen, sondern auf die Benachrichtigung durch Windows warten.
    Hier mal ein Beispiel:

  • Danke Oscar,

    das sieht doch mal richtig professionell aus.

    Leider habe Ich weiterhin dasselbe Problem, es wird ja nun auch alles angezeigt.

    Ich will quasi nur wenn dort Tor 3 in der Datei steht ein bestimmten Text, zB. "TOR UNBEDINGT WIEDER SCHLIESSEN!" stehen haben.

    Dasselbe auch bei Tor 2, bei allem anderen soll er gar nichts machen.

    Vielen Dank vorab.

  • Hallo BugFix,

    habe mir das mal angesehen aber irgendwie bin ich entweder zu doof oder verstehe das System nicht.

    ich gehe mal davon aus das ich in diesem Teil etwas ändern muss.

    If $sPath = $sNotifyFile Then
    Local $sLastLine = FileReadLine($sNotifyFile, -1)
    Local $sMsg = 'Achtung! Neuer Eintrag:\n' & _Now() & ' -> ' & $sLastLine
    GUICtrlSetData($idLabel, StringFormat($sMsg))
    WinActivate($hGui)
    EndIf

    Aber wo zum Geier pack ich die Zeilen die ich haben will hin?
    Cool wäre ja auch wenn er, wie oben, auf einen Text den er ausliest einen benutzerdefinierten Text ausgibt.

    Danke vorab

    • Offizieller Beitrag

    Man kann auch auf den Text in der Datei reagieren:

  • Hallo Oscar,

    vielen Dank, klingt logisch.

    Er bringt aber sobald die Datei andere Einträge hat folgenden Fehler.

    45) : ==> Variable used without being declared.:
    GUICtrlSetData($idLabel, $sMsg)
    GUICtrlSetData($idLabel, ^ ERROR
    ->20:25:51 AutoIt3.exe ended.rc:1
    +>20:25:51 AutoIt3Wrapper Finished.

    EDIT:
    Kann man den ausgelesen Text auch mit irgendwas auffüllen?! ( mit * ging bei meinem Test nicht ) vor den Einträgen steht immer Datum und Uhrzeit, die kenne ich ja nicht vorher :)

    2 Mal editiert, zuletzt von nwmbd (15. September 2016 um 21:23)

  • Hallo Oscar,

    Daten sehen wie folgt aus:

    16.09.2016 07:14:53 Hauptgebäude Anlagennummer Online/Alarm Öffnung Tor 3. Es müsste quasi das Datum, die Anlagennummer sowie das Online/Alarm gekillt werden.

    EDIT:

    Habe den Code nun so verändert, funktioniert 1a. Ist das auch richtig so? :D

    8 Mal editiert, zuletzt von nwmbd (16. September 2016 um 16:07)

    • Offizieller Beitrag
    Zitat von nwmbd

    Habe den Code nun so verändert, funktioniert 1a. Ist das auch richtig so?

    Schön, dass er funktioniert! Woher sollen wir wissen, ob das so richtig ist?
    Wie hast Du denn nun das Problem mit dem Datum/Anlagenummer gelöst?


    Habe das mit dem WINwait so teilweise hinbekommen, er öffnet das aber egal was ich mit x1 x2 y1 y2 mache immer auf dem 1. Bildschirm

    Dannn ist der Titel falsch!
    Was sagt denn "Au3Info"?
    Eventuell musst Du WinTitleMatchMode ändern.

  • Hallo Oscar,

    Daten sehen wie folgt aus:


    16.09.2016 07:14:53 Hauptgebäude Anlagennummer Online/Alarm Öffnung Tor 3. Es müsste quasi das Datum, die Anlagennummer sowie das Online/Alarm gekillt werden.

    Wie bekomme ich das hin? :(

    • Offizieller Beitrag

    Das heißt, Du hast das Problem noch nicht gelöst?!

    Gut! Um dabei helfen zu können, muss ich wissen, was in dieser Zeile alles stehen wird oder stehen kann.
    Das heißt:
    - ist das Datum/Uhrzeit immer gleich lang (führende Nullen)?
    - Steht dort immer Hauptgebäude?
    - Wie viele Stellen hat die Anlagennummer? (Variabel oder mit führenden Nullen)
    - Oder anders, auf welche (immer gleiche) Textstelle kann man testen? (immer "Öffnung Tor X"?)

  • Hallo Oscar,

    Das Datum ist immer gleich, es sind zwischen dein Einträgen aber verschieden Lange Leerzellen. (Sofern das von Bedeutung ist)
    Dort steht auch Nebengebäude, da gibt es dann andere Handlungen oder auch Lager.
    Die Anlagennummer besteht aus 2Buchstaben und 6 Zahlen. zB ZZ123456

    Es würde vollkommen reichen wenn er die Anlage und den Text ganz hinten filtert, der Rest ist vollkommen uninteressant.

    Danke vorab.

    • Offizieller Beitrag

    Wenn vorne immer unterschiedlicher Text mit unterschiedlicher Länge steht, dann kann man nicht so einfach den Text abschneiden.
    Man muss also mit StringInStr auf einen String innerhalb der ganzen Zeile testen.
    Vielleicht so:

  • Hallo Oscar,

    vielen vielen Dank, hier wird einem gut geholfen.

    Besteht nicht die Möglichkeit das man den ersten Teil sucht, ist dieser da dann den zweiten Teil sucht ist der da dann dann das Ereignis ausführen.

    So in der Art:

    If StringInStr($sLastLine, 'Hauptgebaeude') and If StringInStr($sLastLine, 'Öffnung Tor 3') Then

    das er quasi in der ganzen Zeile sucht, theoretisch ist es ja egal, findet er die Texte, egal wo, soll er das Ereignis auslösen.

    Es gibt ja nur 2 Faktoren die entscheidend sind, wo (Hauptgebäude Nebengebäude...) und was (Tor 1-X)

    Danke vorab.

    EDIT:
    ES GEHT !!!!!!!!!!!!! :D:D:D

    Danke Oscar, dein Ansatz hat mich zum Ziel gebracht.
    Nachfolgend noch der Code falls dies jemand interessiert.

    Einwas hätte ich dann doch noch, könnte ich das Überwachungsfenster auf dem 2. Monitor unten links anzeigen? :D

    4 Mal editiert, zuletzt von nwmbd (17. September 2016 um 11:10)

  • PS: Ich habe vorhin erst richtig mitbekommen, was @Kanashius in Post #15 da Feines geschrieben hat... ==> "_WinAPI_ShellChangeNotifyRegister". Die Funktion ist wirklich echt super und sie erledigt mit viel weniger Aufwand dieselbe Arbeit, wie mein Script! Ich spiele noch damit rum... wenn ich eine kleine Demo fertig habe, schiebe ich sie bei Bedarf gerne hoch.

    Bedarf angemeldet :klatschen:

    Gibt es im Netzverwerk die Möglichkeit, den Verursacher einer Dateiaktion anstatt @UserName zu schreiben? Also bei @UserName wird im Netzwerk in der Ausgabe lediglichh meine Usernummer als Programmstarter übernommen, nicht die des Verursachers der Dateiaktion.