
115129
15.06.2014, aktualisiert am 16.06.2014 um 13:45:09 Uhr
BATCH - Zeile(n) aus Log-Datei in eine Archiv-Datei nur wenn nicht vorhanden einlesen
Hallo,
dieser Einzeiler fügt mir Zeile für Zeile den Inhalt von d:\log in d:\archiv.txt untereinander ein.
Was muss geändert werden, wenn in d:\archiv.txt eine Zeile nur einmal vorkommen darf?
Jede Zeile ist einmalig, da Zeitstempel am Zeilenanfang enthalten sind.
Der Aufbau einer Zeile sieht so aus:
Im Moment habe ich lediglich das Problem, dass mir z.B. die oben aufgeführte Zeile mehrfach nach d:\archiv.txt geschrieben wird.
Es soll ein Vergleich zuvor stattfinden ob diese oder jene Zeile aus d:\log in d:\archiv.txt besteht; wenn nein -> schreibe Zeile, wenn ja -> schreibe die Zeile nicht.
Besten Dank schon mal.
Gruß,
Blattlaus
dieser Einzeiler fügt mir Zeile für Zeile den Inhalt von d:\log in d:\archiv.txt untereinander ein.
Log-to-Archiv.bat
type "d:\log">>"d:\archiv.txt"
Was muss geändert werden, wenn in d:\archiv.txt eine Zeile nur einmal vorkommen darf?
Jede Zeile ist einmalig, da Zeitstempel am Zeilenanfang enthalten sind.
Der Aufbau einer Zeile sieht so aus:
2014.06.15 - 14:22:11 | Benutzer: Admin | Zähler: 5 | VPN: irgendeintextmitzahlen
Im Moment habe ich lediglich das Problem, dass mir z.B. die oben aufgeführte Zeile mehrfach nach d:\archiv.txt geschrieben wird.
Es soll ein Vergleich zuvor stattfinden ob diese oder jene Zeile aus d:\log in d:\archiv.txt besteht; wenn nein -> schreibe Zeile, wenn ja -> schreibe die Zeile nicht.
Besten Dank schon mal.
Gruß,
Blattlaus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 240953
Url: https://administrator.de/forum/batch-zeilen-aus-log-datei-in-eine-archiv-datei-nur-wenn-nicht-vorhanden-einlesen-240953.html
Ausgedruckt am: 08.04.2025 um 22:04 Uhr
18 Kommentare
Neuester Kommentar
Hey,
ich würde das mit uniq machen (aus den GNUWin32-Tools)
wenn es denn unbedingt Batch sein soll (umgetestet):
Gruss, Endoro.
ich würde das mit uniq machen (aus den GNUWin32-Tools)
sort log.txt | uniq > archiv.txt
wenn es denn unbedingt Batch sein soll (umgetestet):
for /f "delims=" %%a in (log.txt) do set "line.%%a=7"
for /f "tokens=1*delims=." %%a in ('set line.') do (
for /f "tokens=1*delims=="%%c in ("%%~b") do echo(%%c
)>archiv.txt
Gruss, Endoro.
Versuch es mal so:
Es funktioniert allerdings nicht für Zeilen mit
Die Lösung von bastla könnte so funktionieren:
Das scheint nicht mit allen Windows-Versionen zu funktionieren, zB nicht mit XP.
Gruss, Endoro.
for /f "usebackqdelims=" %%a in ("log.txt") do set ".%%a=7"
(for /f "tokens=1*delims==." %%a in ('set .') do echo(%%a
)>archiv.txt
=
im Text.Die Lösung von bastla könnte so funktionieren:
>"d:\archiv.txt" break
findstr /vg:"d:\archiv.txt" "d:\log">>"d:\archiv.txt"
Gruss, Endoro.
Hallo BlattlausOG!
Grüße
bastla
wo im Moment nichts passiert
trifft es nicht ganz - es wird ja eine neue "archiv.txt" mit den den zusätzlichen Zeilen erzeugt, aber dann in Zeile 4 wieder durch die alte Version ("archiv.bak") überschrieben - daher (ungetestet) eher:copy "D:\archiv.txt" "D:\archiv.neu"
findstr /vg:"D:\log" "D:\archiv.txt">>"D:\archiv.neu"
sort "D:\archiv.neu" /O "D:\archiv.txt"
del "D:\archiv.neu"
bastla
Stimmt! Danke, besser wäre dieses:
Nun könnte es eventuell noch Probleme mit der Codepage geben (Darstellung der Umlaute).
Gruss, Endoro
@ECHO OFF &SETLOCAL disableDelayedExpansion
for /f "usebackqdelims=" %%a in ("log.txt") do set ".%%a=7"
FOR /f "usebackqdelims=" %%a in ("archiv.txt") do set ".%%a=7"
(FOR /f "tokens=1*delims==" %%a in ('set .') do (
FOR /f "tokens=*delims=." %%c IN ("%%~a") DO echo(%%c
))>"archiv.txt"
Gruss, Endoro
Hey,
Was soll in 2. verglichen werden und was ist die Konsequenz aus dem Vergleich?
Wie können die Stichwörter in 3. aussehen (Beispiele).
5. Wonach sortieren? Aufwärts oder abwärts?
Das wächst sich zu einem Projekt aus.
Leider muss ich zu allem, was ich an der Backe habe, auch noch in Urlaub fahren.
Wenn dich dies alles in 2 Wochen noch interessiert, erstelle einen Testdatensatz.
Gruss, Endoro
Was soll in 2. verglichen werden und was ist die Konsequenz aus dem Vergleich?
Wie können die Stichwörter in 3. aussehen (Beispiele).
(alle Zähler-Werte in der Zeile wo der Pfad: /blabla/blabla/blabla vorkommt)
Was ist damit gemeint? Die Variable Pfad
ist eindeutig.5. Wonach sortieren? Aufwärts oder abwärts?
Das wächst sich zu einem Projekt aus.
Leider muss ich zu allem, was ich an der Backe habe, auch noch in Urlaub fahren.
Wenn dich dies alles in 2 Wochen noch interessiert, erstelle einen Testdatensatz.
Gruss, Endoro