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 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
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 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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 117185
Url: https://administrator.de/contentid/117185
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
9 Kommentare
Neuester Kommentar
Zitat von @Beatzler:
Ich weiß hört sich nun alles bestimmt ziemlich komisch an aber ich hoffe ihr versteht einigermaßen was ich meine....
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!
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
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
)
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.
Ich war nicht der Fragesteller mit dem Problem, sondern hatte angenommen, du wüsstest was, das ich nicht weiß
Die Zeitinformation wird in 100 Nanosekunden-Intervallen gespeichert. Nur die Information, die der DIR-Befehl zur Anzeige bringt, hört bei der Minutenangabe auf.