Dateiinhalt auslesen, wenn Kriterium zutrifft ganze Datei löschen
Hi Community,
ich hab eine Frage zum Auslesen von Dateiinhalten, hoffentlich weiß hier wer weiter.
Und zwar bekomme ich von einem Konverter Dateien, die ich dann per Batch abhole, umbenenne und verschiebe. Manchmal erstellt der Konverter aber leere Daten, in denen nur der Start-Satz (beginnend mit 01LAGERD) und der Ende-Satz (beginnend mit 98LAGERD) steht. Aber kein richtiger Inhalt, es sieht dann so aus (das 131004 danach ist ein Zeitstempel und variiert je nach aktuellem Tagesdatum):
Diese Dateien möchte ich löschen, da sie nicht benötigt werden. Es lässt sich leider nicht verhindern, dass der Konverter diese Daten manchmal erstellt.
Die Dateien mit richtigem Inhalt dürfen aber nicht gelöscht werden. Diese sehen zB so aus:
Oder so:
Usw.
D.h. wenn ein Inhalt zwischen 01LAGERD und 98LAGERD steht, darf die Datei nicht gelöscht werden und soll unberührt bleiben. Nur wenn kein Inhalt dazwischen steht, wie im Code ganz oben zu sehen, soll die ganze Datei gelöscht werden.
Hat jemand vielleicht eine Idee ob das möglich ist und wenn ja wie man das anstellen kann?
Danke!
ich hab eine Frage zum Auslesen von Dateiinhalten, hoffentlich weiß hier wer weiter.
Und zwar bekomme ich von einem Konverter Dateien, die ich dann per Batch abhole, umbenenne und verschiebe. Manchmal erstellt der Konverter aber leere Daten, in denen nur der Start-Satz (beginnend mit 01LAGERD) und der Ende-Satz (beginnend mit 98LAGERD) steht. Aber kein richtiger Inhalt, es sieht dann so aus (das 131004 danach ist ein Zeitstempel und variiert je nach aktuellem Tagesdatum):
01LAGERD 131004
98LAGERD 131004
Diese Dateien möchte ich löschen, da sie nicht benötigt werden. Es lässt sich leider nicht verhindern, dass der Konverter diese Daten manchmal erstellt.
Die Dateien mit richtigem Inhalt dürfen aber nicht gelöscht werden. Diese sehen zB so aus:
01LAGERD 1308060000000000J
23LAGERD 0011485690 00001012533 000091
24LAGERD 0011485690 XXXX Zentrallager - NEU Straße 3, Objekt 2
25LAGERD 0011485690 P000010010Anlieferung um 19:00 Uhr
22LAGERD 0011485690 130809 850 092239
98LAGERD 13080600000000000000000006
Oder so:
01LAGERD 1308050000000000J
335324684 00142090 1307500002 00000360000VL Verlesung 20130806VTD
335324692 00142090 1307500002 00000060000VL Verlesung 20130806VTD
335324693 00142091 1307500003 00000070000VL Verlesung 20130806VTD
335324694 00142091 1307500003 00000070000VL Verlesung 20130806VTD
335324695 00142091 1307500003 00000070000VL Verlesung 20130806VTD
335325676 00142392 1304513410 00000070000RA Rampe 20130806VTD
335325677 00142392 1304513410 00000070000RA Rampe 20130806VTD
335326799 00132331 1308500002 00000002500VL Verlesung 20130806VTD
335327197 00138403 1306513521 00000075000M3 SM 3. Stock 20130806VTD
335327198 00138403 1306513521 00000075000M3 SM 3. Stock 20130806VTD
335327199 00138403 1306513521 00000075000M3 SM 3. Stock 20130806VTD
335327316 00138667 1308500002 00000030000VL Verlesung 20130806VTD
98LAGERD 13080500000000000000000014
Usw.
D.h. wenn ein Inhalt zwischen 01LAGERD und 98LAGERD steht, darf die Datei nicht gelöscht werden und soll unberührt bleiben. Nur wenn kein Inhalt dazwischen steht, wie im Code ganz oben zu sehen, soll die ganze Datei gelöscht werden.
Hat jemand vielleicht eine Idee ob das möglich ist und wenn ja wie man das anstellen kann?
Danke!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 218501
Url: https://administrator.de/forum/dateiinhalt-auslesen-wenn-kriterium-zutrifft-ganze-datei-loeschen-218501.html
Ausgedruckt am: 17.02.2025 um 01:02 Uhr
4 Kommentare
Neuester Kommentar
Hallo B-Real!
Damit sollte das Löschen schon mal simuliert werden und wenn Du das "
Grüße
bastla
Für den findstr Befehl muss ich aber den direkten Dateinamen angeben und kann nicht mit Wildcards arbeiten, stimmts?
In diesem Fall nicht - eine weitere Schleife sollte aber genügen:for %%d in ("D:\Deine Datei*.txt") do for /f "delims=:" %%i in ('findstr /bn "98LAGERD" "%%d"') do if %%i==2 echo del "%%d"
echo
" entfernst auch tatsächlich stattfinden ...Grüße
bastla