Batchdatei - Logschreiben aber trotzdem Textausgabe in der Konsole
Hallo!
Mein Problem ist das ich wenn ich ne Batch habe und eine Log definiert habe und Zeilen mit
in die Log schreibe keine Ausgabe mehr am aktuellen Konsolefesnter erfolgt. Kennt da jemand ne Lösung?
Mein Problem ist das ich wenn ich ne Batch habe und eine Log definiert habe und Zeilen mit
>> %LOG%
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 17196
Url: https://administrator.de/contentid/17196
Ausgedruckt am: 08.11.2024 um 21:11 Uhr
4 Kommentare
Neuester Kommentar
M.W. geht das mit dem normalen Kommandointerpreter von Windows nicht. Iirc bietet 4NT von JP-Soft diese Möglichkeit.
Aber mal grundsätzlich: wozu eigentlich? Entweder sitz ich davor und will gucken, was passiert, dann brauch' ich die Umleitung nicht. Wenn ich später alles in Ruhe nachlesen will, dann stört mich auch der dunkle Monitor nicht
hand/dba
Aber mal grundsätzlich: wozu eigentlich? Entweder sitz ich davor und will gucken, was passiert, dann brauch' ich die Umleitung nicht. Wenn ich später alles in Ruhe nachlesen will, dann stört mich auch der dunkle Monitor nicht
hand/dba
Moin Kamenz,
ich finde dba's Einwand berechtigt, kenne aber auch Dein Problem.
Ich habe das in einigen Batchen (z.B. meinen StartUp-Scripten), in denen ich ein paar normale Statusmeldungen auf dem Bildschirm anzeigen lasse und aus den Augenwinkeln mitverfolge, aber zusätzlich Fehlermeldungen sowohl auf dem Monitor haben will wie auch in einer Log-Datei. Die normalen Alles-Prima-Meldungen will ich ja nicht mitloggen... wozu auch.
Billig-Strategie für diese Mimik: wenn es einen Fehler gegeben hat, einfach den selben Befehl noch einmal ausführen lassen. Und diesmal die Ausgabe umleiten in die Logdatei
Beispiel:
Oder, was bei mir auch vorkommt: bestimmte Befehle einfach doppelt ausführen.
Habe sogar ein echtes Beispiel aus meinen Startscriptchen gefunden:
Das heißt, die Anzeige, welche Netzlaufwerke nach dem Startup da sind, will ich erst auf dem Bildschirm haben und danach nochmal mit Uhrzeit im Logfile.
Dritte Variante:
Befehl nur einmal ausführen, aber jegliche Meldung unterdrücken und selbst eine (oder mehrere) schreiben
Eleganter bekommst Du Deine Anforderung mit kleinen Utilities hin, die von richtigen Betriebssystemen nach Windows portiert wurden.
Die nennen sich dann Tee.exe oder (mTee.exe, wTee.exe) und machen dasselbe wie tee unter Unix (schreiben gleichzeitig auf zwei Kanälen, einmal auf Console, einmal in Datei).
Findest Du beim Gogglen.
Vorteil: Du kannst alle Meldungen dann sowohl..als auch.. schreiben und der eigentliche Befehl wird nur einmal ausgeführt.
Nachteil: Dein Batch läuft eben auch nur noch dort, wo das Hilfsutility gefunden wird. Auf Deinem Rechner sicherlich, aber eben nicht mehr auf jedem beliebigen Rechner.
Deshalb empfehle ich Dir lieber das Doppelt-Schreiben, auch wenn es stümperhaft aussieht.
HTH Biber
ich finde dba's Einwand berechtigt, kenne aber auch Dein Problem.
Ich habe das in einigen Batchen (z.B. meinen StartUp-Scripten), in denen ich ein paar normale Statusmeldungen auf dem Bildschirm anzeigen lasse und aus den Augenwinkeln mitverfolge, aber zusätzlich Fehlermeldungen sowohl auf dem Monitor haben will wie auch in einer Log-Datei. Die normalen Alles-Prima-Meldungen will ich ja nicht mitloggen... wozu auch.
Billig-Strategie für diese Mimik: wenn es einen Fehler gegeben hat, einfach den selben Befehl noch einmal ausführen lassen. Und diesmal die Ausgabe umleiten in die Logdatei
Beispiel:
...
net use x: \\server\freigabe
if Errorlevel 1 net use x: \\server\freigabe >>%logfile%
...
Habe sogar ein echtes Beispiel aus meinen Startscriptchen gefunden:
...
net use |find "OK"
echo %time:~0,5% NetStatus final >>%logfile%
net use |find "OK" >>%logfile%
...
Dritte Variante:
Befehl nur einmal ausführen, aber jegliche Meldung unterdrücken und selbst eine (oder mehrere) schreiben
...
net use x: \\server\freigabe >nul 2>nul
if Errorlevel 1 (
echo Laufwerk X: konnte nicht verbunden werden!
echo Laufwerk X: konnte nicht verbunden werden! >>%logfile%
goto nextlw
)
echo Laufwerk X: verbunden....
:nextlw
net use y: \\server2\freigabeB >nul 2>nul
...
Die nennen sich dann Tee.exe oder (mTee.exe, wTee.exe) und machen dasselbe wie tee unter Unix (schreiben gleichzeitig auf zwei Kanälen, einmal auf Console, einmal in Datei).
Findest Du beim Gogglen.
Vorteil: Du kannst alle Meldungen dann sowohl..als auch.. schreiben und der eigentliche Befehl wird nur einmal ausgeführt.
Nachteil: Dein Batch läuft eben auch nur noch dort, wo das Hilfsutility gefunden wird. Auf Deinem Rechner sicherlich, aber eben nicht mehr auf jedem beliebigen Rechner.
Deshalb empfehle ich Dir lieber das Doppelt-Schreiben, auch wenn es stümperhaft aussieht.
HTH Biber
Viele Wege führen zum Ziel. Bibers und meinen Weg habe ich in dieser Anleitung zusammengetragen.
Bye, nz
Bye, nz