dani
Goto Top

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

Content-Key: 31671

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

Printed on: April 23, 2024 at 08:04 o'clock

Member: Biber
Biber May 04, 2006 at 06:52:27 (UTC)
Goto Top
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 Anforderung hirnrissig ungewöhnlich.
Bist Du sicher, dass Du eine (Text-)Logfile-Mimik brauchst und nicht eine (Semaphoren-) Lockfile-Mimik?

Gruß
Biber
Member: Dani
Dani May 04, 2006 at 07:00:08 (UTC)
Goto Top
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..
Die Datei hat max. 2MB.

Bist Du sicher, dass Du eine
(Text-)Logfile-Mimik brauchst und nicht eine
(Semaphoren-) Lockfile-Mimik?
Was ist dort der Unterschied?!


Gruß
Dani
Member: Biber
Biber May 04, 2006 at 07:54:18 (UTC)
Goto Top
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.
Member: Dani
Dani May 04, 2006 at 08:37:08 (UTC)
Goto Top
Hi,
ok...thx!! Mein Vorhaben ist vielleicht komisch. Aber es wäre cool, wenn das Löschen einer Zeile in der Textfile ginge.


Gruß
Dani
Member: scriptkiddy
scriptkiddy May 05, 2006 at 20:04:49 (UTC)
Goto Top
Hi,
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..

Dass es geht hat Biber ja geschrieben (durch einen find befehl.......)
Member: Dani
Dani May 06, 2006 at 08:32:44 (UTC)
Goto Top
Hi,
Dass es geht hat Biber ja geschrieben (durch
einen find befehl.......)
soweit ist alles klar. Aber wie lösche ich dann die Zeile aus der log Datei?!


Gruß
Dani
Member: Biber
Biber May 06, 2006 at 09:45:35 (UTC)
Goto Top
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:
Z:\>
$cmd$type logout.txt|find "26.04"  
Mi 26.04.2006 11:55:57,80: Hf logged off
Umgekehrt finde ich alle anderen Einträge ("alle außer") mit
Z:\>
$cmd$type logout.txt|find /v "26.04"  
(Output: ganz ganz lange Liste, poste ich jetzt nicht)
Und diesen Output leite ich wieder um auf die Originaldatei:
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
Member: Dani
Dani May 06, 2006 at 09:51:57 (UTC)
Goto Top
Hi,
Danke Biber! Jetzt habe ich das richtig verstanden. Vielen Dank für euere Mühen!
Nice WE!!!


Gruß
DAni