enno13

Daten aus einer Textdatei löschen die älter als 24 Stunden sind

Hallo zusammen

Ich möchte gerne das alle was über 24 Stunden in einer Textdatei ist gelöscht wird. Name der Textdatei: Auswertung.txt
Ich erzeuge mit einem Programm eine Textdatei. Da werden in sporadischen Abständen Sachen rein geschrieben, unter andem auch ein Zeitstempel: ( 20150901_045221 )
siehe Beispiel: steht ziemlich in der mitte

1_465_C01_065, 1065557010211022, 20150901_045221, P7,M02,2421,SP_42,outOfLimit,Serie
1_465_C01_065, 1065557010212021, 20150901_045346, P2,M02,2411,SP_43,outOfLimit,Serie
1_465_C01_068, 1068557010185062, 20150901_053521, P2,M06,6812,SP_42,inTolerance,Serie
1_465_C01_068, 1068557010190061, 20150901_055459, P9,M06,6882,SP_43,inTolerance,Serie

Jetzt möchte ich , das jede Zeile die älter als 24 Stunden ist gelöscht wird.
also ist das immer die erste die Oben steht, weil das immer die älteste drin steht.
Die neuen Dateien die kommen werden unten dazugefügt.

Gibt es eine Möglichkeit mit einer Batch oder etwas ähnlichen der mir das automatisch macht.
Danke
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 283125

Url: https://administrator.de/forum/daten-aus-einer-textdatei-loeschen-die-aelter-als-24-stunden-sind-283125.html

Ausgedruckt am: 07.06.2025 um 16:06 Uhr

114757
114757 17.09.2015 aktualisiert um 09:15:31 Uhr
Goto Top
Moin,
mit Powershell kein Problem:
$path = 'c:\Auswertung.txt'  
(gc $path) | ?{(Get-Date ($_ -replace '.*,\s*(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2}),.*','$3.$2.$1 $4:$5:$6')) -ge (get-date).AddHours(-24)} | set-content $path  
Gruß jodel32
Enno13
Enno13 17.09.2015 aktualisiert um 09:01:37 Uhr
Goto Top
Hallo

Habe es gerade in Powershell eingegeben , aber er läuft nicht, oder besser er löscht nix.

Nach der Korrektur läuft es, super danke
114757
114757 17.09.2015 aktualisiert um 09:01:15 Uhr
Goto Top
Zitat von @Enno13:
Habe es gerade in Powershell eingegeben , aber er läuft nicht, oder besser er löscht nix
Ich hatte es kurz vor deiner Antwort noch nachkorrigiert.
Läuft hier perfekt ...
Enno13
Enno13 17.09.2015 um 09:02:36 Uhr
Goto Top
DANKE es Läuft
Super. und die Steuer ich dann einfach jede Stunde mit einer Batch an das sie ausgefürt wird.
114757
114757 17.09.2015 um 09:03:34 Uhr
Goto Top
Zitat von @Enno13:

DANKE es Läuft
Super. und die Steuer ich dann einfach jede Stunde mit einer Batch an das sie ausgefürt wird.
Wenn du willst lässt sich das auch direkt in eine Batch einbauen...
114757
114757 17.09.2015 aktualisiert um 09:08:00 Uhr
Goto Top
Powershell in Batch eingebaut
@echo off
set "pfad=C:\Auswertung.txt"  
powershell -ExecutionPolicy ByPass -Command "&{(gc '%pfad%') | ?{(Get-Date ($_ -replace '.*,\s*(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2}),.*','$3.$2.$1 $4:$5:$6')) -ge (get-date).AddHours(-24)} | set-content '%pfad%'}"  

Wenns das dann war, den Beitrag bitte noch auf gelöst setzen.

Gruß und schönen Arbeitstag
jodel32
Enno13
Enno13 17.09.2015 um 09:11:36 Uhr
Goto Top
PERFEKT

DANKE