Batch - Zeile suchen und löschen
Guten Morgen,
ich habe eine Textdatei (logfile). Dort werden beim anmelden einen Eintrag / Benutzer gemacht. Nun möchte ich aber, dass wenn der Benutzer sich abmeldet, dass seine Zeile wieder per Batch gelöscht wird! Das Problem ist ich weiß nicht, wie ich eine Zeile löschen kann!
Jemand einen Vorschlag??
Gruß
Dani
ich habe eine Textdatei (logfile). Dort werden beim anmelden einen Eintrag / Benutzer gemacht. Nun möchte ich aber, dass wenn der Benutzer sich abmeldet, dass seine Zeile wieder per Batch gelöscht wird! Das Problem ist ich weiß nicht, wie ich eine Zeile löschen kann!
Jemand einen Vorschlag??
Gruß
Dani
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 31671
Url: https://administrator.de/forum/batch-zeile-suchen-und-loeschen-31671.html
Ausgedruckt am: 03.04.2025 um 01:04 Uhr
8 Kommentare
Neuester Kommentar
Moin Dani,
klassischerweise würde man/frau per Batch eine bestimmte Zeile löschen durch ein
find /v /i "eindeutigerSuchtext" textfilename.txt >textfilename.txt
..was bei einem Logfile von ein paar Megabyte nicht sonderlich effizient ist..
-oder-
per Batch oder VBS zeilenweise durch das File wackeln, alle Zeilen lesen und alle Zeilen bis auf die zu löschende eins zu eins wieder rausschreiben.
Im Zusammenhang mit einem Logfile erscheint mir Deine Anforderunghirnrissig ungewöhnlich.
Bist Du sicher, dass Du eine (Text-)Logfile-Mimik brauchst und nicht eine (Semaphoren-) Lockfile-Mimik?
Gruß
Biber
klassischerweise würde man/frau per Batch eine bestimmte Zeile löschen durch ein
find /v /i "eindeutigerSuchtext" textfilename.txt >textfilename.txt
..was bei einem Logfile von ein paar Megabyte nicht sonderlich effizient ist..
-oder-
per Batch oder VBS zeilenweise durch das File wackeln, alle Zeilen lesen und alle Zeilen bis auf die zu löschende eins zu eins wieder rausschreiben.
Im Zusammenhang mit einem Logfile erscheint mir Deine Anforderung
Bist Du sicher, dass Du eine (Text-)Logfile-Mimik brauchst und nicht eine (Semaphoren-) Lockfile-Mimik?
Gruß
Biber
Was ist dort der Unterschied?!
In einem Logfile wird protokolliert, nur am Ende angefügt und nie etwas gelöscht.
In einem Lock-File/einer Semaphorendatei tragen sich Benutzer oder Prozesse ein, die gerade an einer gemeinschaftlich nutzbaren Ressource angemeldet sind und etwas davon in Bearbeitung haben/exclusiv beanspruchen.
(Führt dann z.B. zu solchen Meldungen wie "Datei XY/Datensatz Z kann momentan nicht bearbeitet werden, weil gerade von Benutzer Hamster06 gesperrt" oder ähnlichen.)
Diese Mimik verwenden auch halbstarke Datenbanken wie MS-Access.
Hi,
ok...thx!! Mein Vorhaben ist vielleicht komisch. Aber es wäre cool, wenn das Löschen einer >Zeile in der Textfile ginge.
ok...thx!! Mein Vorhaben ist vielleicht komisch. Aber es wäre cool, wenn das Löschen einer >Zeile in der Textfile ginge.
Um Hier mal Biber zitieren zu dürfen .....
Moin Dani,
klassischerweise würde man/frau per
Batch eine bestimmte Zeile löschen
durch ein
find /v /i "eindeutigerSuchtext"
textfilename.txt >textfilename.txt
..was bei einem Logfile von ein paar
Megabyte nicht sonderlich effizient ist..
klassischerweise würde man/frau per
Batch eine bestimmte Zeile löschen
durch ein
find /v /i "eindeutigerSuchtext"
textfilename.txt >textfilename.txt
..was bei einem Logfile von ein paar
Megabyte nicht sonderlich effizient ist..
Dass es geht hat Biber ja geschrieben (durch einen find befehl.......)
Moin Dani,
ich versuchs noch mal...
Beispiel: eine Datei "Logout.txt" mit allen Logout-Zeiten.
Ein eindeutiger Eintrag darin sei der vom 26.04.2006.
Den würde ich so finden vom CMD-Prompt aus:
Umgekehrt finde ich alle anderen Einträge ("alle außer") mit
Und diesen Output leite ich wieder um auf die Originaldatei:
So würde es gehen, obwohl ich so etwas nie nie nie bei einem Logfile machen würde.
Gruß
Biber
ich versuchs noch mal...
Beispiel: eine Datei "Logout.txt" mit allen Logout-Zeiten.
Ein eindeutiger Eintrag darin sei der vom 26.04.2006.
Den würde ich so finden vom CMD-Prompt aus:
1
2
3
2
3
Z:\>
$cmd$type logout.txt|find "26.04"
Mi 26.04.2006 11:55:57,80: Hf logged off
1
2
3
2
3
Z:\>
$cmd$type logout.txt|find /v "26.04"
(Output: ganz ganz lange Liste, poste ich jetzt nicht)
1
2
3
4
5
2
3
4
5
Z:\>
$cmd$type logout.txt|find /v "26.04">logout.txt
(Test danach: die Zeile vom 26.04.2006 ist nicht mehr drin)
$cmd$type logout.txt|find "26.04"
(--keine Fundstelle-- kein Output)
So würde es gehen, obwohl ich so etwas nie nie nie bei einem Logfile machen würde.
Gruß
Biber