logfile mit batch
Hallo
Ist`s denn möglich, dass man in ein logfile vorne anhängt?, bzw. dass neue Einträge oben stehen
Hat da jemand schon mal was gemacht?
lg
chris68
Ist`s denn möglich, dass man in ein logfile vorne anhängt?, bzw. dass neue Einträge oben stehen
Hat da jemand schon mal was gemacht?
lg
chris68
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 24133
Url: https://administrator.de/contentid/24133
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
6 Kommentare
Neuester Kommentar
Meinst du etwas in der Art?
2006.01.20 22:04:30 - Huch, noch einer, da muss irgendwo ein Nest sein
2006.01.20 22:02:10 - Ein dritter ...
2006.01.20 22:01:48 - Noch ein Logeintrag
2006.01.20 22:01:15 - Ein Logeintrag
Mit Batch kann ich dir nicht dienen, das ist nicht meine Baustelle.
Mit einem VBScript könntest du die Logdatei auslesen und in die Variable schreiben, in der der hinzuzufügende Logeintrag steht.
Würde in etwa so aussehen:
strLog = "Neuer Logeintrag"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\test.log", 1)
strTmp = objFile.ReadAll
strLog = strLog & vbCrLf & strTmp
objFile.Close
Set objFile = objFSO.OpenTextFile("c:\test.log", 2, TRUE)
objFile.Write strLog
objFile.Close
gemini
2006.01.20 22:04:30 - Huch, noch einer, da muss irgendwo ein Nest sein
2006.01.20 22:02:10 - Ein dritter ...
2006.01.20 22:01:48 - Noch ein Logeintrag
2006.01.20 22:01:15 - Ein Logeintrag
Mit Batch kann ich dir nicht dienen, das ist nicht meine Baustelle.
Mit einem VBScript könntest du die Logdatei auslesen und in die Variable schreiben, in der der hinzuzufügende Logeintrag steht.
Würde in etwa so aussehen:
strLog = "Neuer Logeintrag"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\test.log", 1)
strTmp = objFile.ReadAll
strLog = strLog & vbCrLf & strTmp
objFile.Close
Set objFile = objFSO.OpenTextFile("c:\test.log", 2, TRUE)
objFile.Write strLog
objFile.Close
gemini
Moin chris68,
von der Strategie her geht es auch per Batch so, wie gemini es vorgezeichnet hat:
1) die "neue" Zeile in eine Logdatei/eine Textdatei schreiben
2) alle bisherigen Logzeilen aus der "alten" Logdatei lesen und darunterschreiben.
Zur Umsetzung kannst Du entweder mit den ganz trivialen CMD-Befehlen COPY und RENAME arbeiten:
a)
::---Snipp InsertTopLine1.Bat
:: Parameter 1,2,3...9 = "Worte" der neuen Logfile-Zeile
@echo Off &SetLocal
Set "LogfileDir=d:\test"
Set "LogfileName=Echtes.Log"
If exist "%LogFileDir%\LogFileCopy.Log" del "%LogFileDir%\LogFileCopy.Log"
If exist "%LogFileDir%\%logfileName%" ren "%LogFileDir%\%logfileName%" LogFileCopy.Log
::--Jetzt die neue Zeile in Echtes.Log schreiben:
echo %date% %time% %*>"%LogFileDir%\%logfileName%"
:: jetzt Echtes.Log+LogFileCopy.Log in Echtes.Log zusammenfassen.
copy /a "%LogFileDir%\%logfileName%"+"%LogFileDir%\LogFileCopy.Log" /y >nul
::-------Snipp InsertTopLine1.Bat
b) ...oder eine neue Zeile mit "Echo %date% ....bla > Echtes.log" schreiben
und die "alten" Zeilen mit einer FOR /F -Schleife lesen und in die Echtes.log anECHOen..
Da Möglichkeit b) auf jeden Fall ineffizienter und weniger performant ist (gerade bei LogFiles), verzichte ich hier auf so ein Beispiel. Beispiele zum Auslesen einer Textdatei mit FOR /F gibt es aber in "Batch und Shell" mehrere.
HTH Biber
von der Strategie her geht es auch per Batch so, wie gemini es vorgezeichnet hat:
1) die "neue" Zeile in eine Logdatei/eine Textdatei schreiben
2) alle bisherigen Logzeilen aus der "alten" Logdatei lesen und darunterschreiben.
Zur Umsetzung kannst Du entweder mit den ganz trivialen CMD-Befehlen COPY und RENAME arbeiten:
a)
::---Snipp InsertTopLine1.Bat
:: Parameter 1,2,3...9 = "Worte" der neuen Logfile-Zeile
@echo Off &SetLocal
Set "LogfileDir=d:\test"
Set "LogfileName=Echtes.Log"
If exist "%LogFileDir%\LogFileCopy.Log" del "%LogFileDir%\LogFileCopy.Log"
If exist "%LogFileDir%\%logfileName%" ren "%LogFileDir%\%logfileName%" LogFileCopy.Log
::--Jetzt die neue Zeile in Echtes.Log schreiben:
echo %date% %time% %*>"%LogFileDir%\%logfileName%"
:: jetzt Echtes.Log+LogFileCopy.Log in Echtes.Log zusammenfassen.
copy /a "%LogFileDir%\%logfileName%"+"%LogFileDir%\LogFileCopy.Log" /y >nul
::-------Snipp InsertTopLine1.Bat
b) ...oder eine neue Zeile mit "Echo %date% ....bla > Echtes.log" schreiben
und die "alten" Zeilen mit einer FOR /F -Schleife lesen und in die Echtes.log anECHOen..
Da Möglichkeit b) auf jeden Fall ineffizienter und weniger performant ist (gerade bei LogFiles), verzichte ich hier auf so ein Beispiel. Beispiele zum Auslesen einer Textdatei mit FOR /F gibt es aber in "Batch und Shell" mehrere.
HTH Biber
Hi,
schreib den Eintrag ganz normal rein und sortier die Datei dan Reverse
Orginal:
logfilemitdatum.txt
2006.01.20 22:01:48 - Noch ein Logeintrag
2006.01.20 22:04:30 - Huch, noch einer, da muss irgendwo ein Nest sein
2006.01.20 22:01:15 - Ein Logeintrag
2006.01.20 22:02:10 - Ein dritter ...
Hier die Ausgaben mit sort (xp)
X:\>sort logfilemitdatum.txt
2006.01.20 22:01:15 - Ein Logeintrag
2006.01.20 22:01:48 - Noch ein Logeintrag
2006.01.20 22:02:10 - Ein dritter ...
2006.01.20 22:04:30 - Huch, noch einer, da muss irgendwo ein Nest sein
[M991CW06] X:\>sort /r logfilemitdatum.txt
2006.01.20 22:04:30 - Huch, noch einer, da muss irgendwo ein Nest sein
2006.01.20 22:02:10 - Ein dritter ...
2006.01.20 22:01:48 - Noch ein Logeintrag
2006.01.20 22:01:15 - Ein Logeintrag
Gruß
Dieter
schreib den Eintrag ganz normal rein und sortier die Datei dan Reverse
Orginal:
logfilemitdatum.txt
2006.01.20 22:01:48 - Noch ein Logeintrag
2006.01.20 22:04:30 - Huch, noch einer, da muss irgendwo ein Nest sein
2006.01.20 22:01:15 - Ein Logeintrag
2006.01.20 22:02:10 - Ein dritter ...
Hier die Ausgaben mit sort (xp)
X:\>sort logfilemitdatum.txt
2006.01.20 22:01:15 - Ein Logeintrag
2006.01.20 22:01:48 - Noch ein Logeintrag
2006.01.20 22:02:10 - Ein dritter ...
2006.01.20 22:04:30 - Huch, noch einer, da muss irgendwo ein Nest sein
[M991CW06] X:\>sort /r logfilemitdatum.txt
2006.01.20 22:04:30 - Huch, noch einer, da muss irgendwo ein Nest sein
2006.01.20 22:02:10 - Ein dritter ...
2006.01.20 22:01:48 - Noch ein Logeintrag
2006.01.20 22:01:15 - Ein Logeintrag
Gruß
Dieter