beatzler
Goto Top

Prüfen ob und wie eine TXT vorhanden ist und entsprechend reagieren

Halli Hallo,

ich brauchte mal wieder ein wenig unterstützung von euch und würde gern ein feedback haben ob ich so einigermaßen gut davor bin oder ob und wenn ja wie ihr das am besten lösen würdet..... Vielen Dank im vorraus !

Habe ein Tool welches alle paar Minuten div. Meldungen in eine TXT Datei schreibt. Leider sind diese TXT teilweise unvollständig da das Tool diese zu schnell generiert hat. Nachdem sie generiert wurden wird der inhalt per E-Mail verschickt. Wurde eine txt unvollständig oder falsch generiert wird diese von der gleichen bat wenige Sekunden später nochmal generiert. Dies kann dann auch noch nicht 100 % stimmen sodass nun zwar mehr in der Meldung steht aber leider immer noch nicht alles. Das ganze ist sehr wichtig und müsste von daher so schnell wie es nur geht ( eigentlich sobald die textdatei erstellt wurde ) verschickt werden. Da nun aber leider nicht jedesmal der gesammte Text komplett in diese Textdatei geschrieben wird aber nur der vollständige Text verschickt werden soll habe ich nun ein Problem.....

Mein Hauptproblem ist die Zeit! ich würde ungern nach der ersten Generierung jedesmal einen festen Zeitwert abwarten wollen da man leider auch nicht sagen kann wie schnell die Meldung komplett vorliegt meist jedoch weit unter 10 sek. es kann aber auch schonmal länger dauern leider, von daher möchte ich nun ungern jedesmal 20 sek vor der Versendung warten um sicherzugehen das die Meldung komplett ist obwohl sie das schon nach 1 sek war ....

Die Meldungen unterscheiden sich enorm sodass man nicht anhand von bestimmten Wörtern oder Längen irgendwas abschätzen könnte face-sad Aber eine TXT umfasst immer nur eine Zeile mit max 200 Zeichen

Wie löse ich dieses Problem am besten?

Ich dachte mir das ich danach folgendermaßen weiterarbeite:

Innerhalb der Bat welche die TXT erzeugt ganz am Anfang:

- Überprüfen ob TXT schon vorhanden ist = Wie macht man das am besten ?
- Wenn ja dann erstelle eine neue txt (unter neuem Namen) & führe den normalen Bat ablauf zur Erstellung durch >> danach GOTO CHECK
- Wenn TXT noch nicht vorhanden = normale TXT Erstellung starten

:CHECK >>>> Check überprüft nun ob die Dateien gleich sind,
fc datei1.txt datei2.txt >nul && goto GLEICH
ECHO Die Dateien unterscheiden sich !
PAUSE
:GLEICH
ECHO Die dateien sind gleich !
PAUSE

- Sind die dateien unterschiedlich versende nur die letze Datei ...
- Dies wird solange gemacht bis die Meldung komplett ist und die Datei verschickt werden kann


Ich weiß hört sich nun alles bestimmt ziehmlich komisch an aber ich hoffe ihr versteht einigermaßen was ich meine....


Wäre für jeden Tipp / Hilfe sehr dankbar !

MFG Beatzler

Content-Key: 117185

Url: https://administrator.de/contentid/117185

Ausgedruckt am: 29.03.2024 um 12:03 Uhr

Mitglied: 77559
77559 31.05.2009 um 08:36:29 Uhr
Goto Top
Zitat von @Beatzler:
Ich weiß hört sich nun alles bestimmt ziemlich komisch an aber ich hoffe ihr versteht einigermaßen was ich meine....

Dafür das du nicht geschrieben hast, was dein eigentliches Problem ist, hast du verdammt viele Worte gebraucht.

Ich nehme mal an das du so etwas meinst
If exist Datei (
  Echo Datei existiert
) Else (
  Echo Datei existiert nicht
)

Frohe Pfingsten!
Mitglied: Beatzler
Beatzler 31.05.2009 um 12:28:52 Uhr
Goto Top
Hey,

vielen Dank für deine Antwort ! Nun bekomme ich zumindest diese Abfrage schonmal hin.

Mein Problem ist das ich nicht weiß wie ich am besten die vollständige TXT verschicke also wie ich mir irgendwie was basteln kann das er solange wartet bis die Meldung vollständig ist. Man könnte natürlich nun sich eine BAT schreiben welche 10 sek. lang prüft welches TXT nun das "beste" ist und dieses verschickt. Aber jedesmal 10 sek sollte es eigentlich nicht. Hätte da nicht noch jemand ne idee nen tipp ?

Mfg Beatzler
Mitglied: 77559
77559 31.05.2009 um 17:26:19 Uhr
Goto Top
Zitat von @Beatzler:

Hätte da nicht noch jemand ne idee nen tipp ?

Da du schon wieder, mit vielen Worten, vermieden hast zu sagen was dein eigentlicher Batch macht,
nein und jetzt hab ich auch keine Lust mehr.
Einen schönen Pfingstsonntag noch
Mitglied: miniversum
miniversum 01.06.2009 um 13:48:12 Uhr
Goto Top
Hier mal eine ungetestete Idee wie du kontrollieren kannst ob sich die Datei verändert hat. Geprüft wird dabei das Datum des letzten Schreibzugriffs. Geprüft wird dann im 1 Sekunden Raster. Hier kannst du die Zeit auch anpassen.:
set "%datei%=Datei.txt"  
FOR /F "tokens=2 delims= " %%i in ('dir /TW "%datei%"|find "%datei%"') do set zeit1=%%i  
:loop
ping -n 1 localhost >NUL
FOR /F "tokens=2 delims= " %%i in ('dir /TW "%datei%"|find "%datei%"') do set zeit2=%%i  
if "%zeit1%" neq "%zeit2%" (  
set "zeit1=%zeit2%"  
goto:loop
)
Mitglied: 78632
78632 01.06.2009 um 13:55:22 Uhr
Goto Top
Geprüft wird dann im 1 Sekunden Raster.
Alles schön und gut, aber warum ein so kurzes Prüfintervall, wenn die Zeitinformation beim Dir-Befehl nur bis zur Minute geht? Oder fehlen mir die Sekundeninformationen? Dann verrate mir doch mal bitte, wie ich die erhalte.
Mitglied: miniversum
miniversum 01.06.2009 um 14:04:48 Uhr
Goto Top
wie geschrieben war das eine ungetestete idee.
Dan must dus halt beim fc belassen zum vergleich
Mitglied: 78632
78632 01.06.2009 um 14:10:05 Uhr
Goto Top
Ich war nicht der Fragesteller mit dem Problem, sondern hatte angenommen, du wüsstest was, das ich nicht weiß face-wink
Mitglied: Beatzler
Beatzler 01.06.2009 um 14:13:33 Uhr
Goto Top
Hey,

vielen Dank für eure Hilfe. Das war auch schon ein sehr guter Ansatz ! Habe ich es nun richtig verstanden das die Zeitinformationen wann die Datei erstellt / verändert wurde nur Minutenweise gespeichert werden ?

Mfg Beatzler
Mitglied: 78632
78632 01.06.2009 um 14:16:34 Uhr
Goto Top
Die Zeitinformation wird in 100 Nanosekunden-Intervallen gespeichert. face-wink Nur die Information, die der DIR-Befehl zur Anzeige bringt, hört bei der Minutenangabe auf.