chris68
Goto Top

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

Content-Key: 24133

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

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

Member: Dani
Dani Jan 20, 2006 at 21:01:20 (UTC)
Goto Top
Könntest du dein Vorhaben ein bisschen genauer beschreiben?

Was für eine Logfile, von welchem Programm, was willst du ihr machen....
Wär echt gut. So können Missverständnisse ausgeschlossen werden.
Member: gemini
gemini Jan 20, 2006 at 21:23:15 (UTC)
Goto Top
Meinst du etwas in der Art?

2006.01.20 22:04:30 - Huch, noch einer, da muss irgendwo ein Nest sein face-wink
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
Member: chris68
chris68 Jan 21, 2006 at 16:04:35 (UTC)
Goto Top
habe eine batch-datei, wo gewisse verzeichnisse in ein anderes laufwerk kopiert werden - das ergebnis schreib ich dann in eine logdatei, bzw. wird das mit datum und uhrzeit in der logdatei angehängt - aber eben am schluss - um nicht immer nach unten zu scrollen zu müssen, wäre es praktisch, wenn der neue eintrag oben steht.
ich habe glaube schon irgendwo mal gelesen, dass das funktioniert, doch finde ich das leider nicht mehr.....
lg
chris68
Member: Biber
Biber Jan 21, 2006 at 23:14:44 (UTC)
Goto Top
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
Member: chris68
chris68 Jan 23, 2006 at 11:35:41 (UTC)
Goto Top
besten Dank!
LG
Chris68
Member: djbrandt
djbrandt Mar 09, 2006 at 14:54:20 (UTC)
Goto Top
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