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-ID: 24133

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

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

Dani
Dani 20.01.2006 um 22:01:20 Uhr
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.
gemini
gemini 20.01.2006 um 22:23:15 Uhr
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
chris68
chris68 21.01.2006 um 17:04:35 Uhr
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
Biber
Biber 22.01.2006 um 00:14:44 Uhr
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
chris68
chris68 23.01.2006 um 12:35:41 Uhr
Goto Top
besten Dank!
LG
Chris68
djbrandt
djbrandt 09.03.2006 um 15:54:20 Uhr
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