kuhnikuehnast
Goto Top

Batch- Gleichzeitige Ausgabe eines echos und speichern in Datei

Ich möchte mittels Batch echos zum einen im Fenster anzeigen lassen, zum anderen gleichzeitig als Logfile in einer .txt speichern

Hi!
So weit bin ich bis jetzt:

echo Datum gespeichert > %CD%/log/[%date%]- Logfile Server.txt

Allerdings bekomm ich das nie in der "Batchbox" angezeigt. Es wird immer nur in die Logfile Server.txt geschrieben.
Ich könnte jetzt natürlich alles doppelt schreiben:
echo %time% Datum gespeichert >> "%CD%/log/[%date%]- Logfile Server.txt"  
echo Datum gespeichert



, aber geht das auch anders? Schließlich vergeht ja eine gewisse Zeit bis der erste Befehl abgearbeitet ist und dann ist die Zeit ja nicht mehr synchron...

lg Kuhni

Content-ID: 133589

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

Ausgedruckt am: 23.11.2024 um 09:11 Uhr

bastla
bastla 15.01.2010, aktualisiert am 18.10.2012 um 18:40:52 Uhr
Goto Top
Hallo kuhnikuehnast!

Halte den Timestamp einfach in einer Variablen fest:
set "Zeit=%time%"  
echo %Zeit% Datum gespeichert>>"log/[%date%]- Logfile Server.txt"  
echo %Zeit% Datum gespeichert
Ganz nebenbei: Wozu "%CD%" in der Pfadangabe dienen sollte, ist mir nicht klar ...

Ansonsten zum Thema: Batch - mit und ohne tee - Konsoleausgaben zugleich in eine Datei leiten und auf dem Bildschirm ausgeben (findest Du auch ein Stück weiter unten auf dieser Seite hier face-wink)

Grüße
bastla
miniversum
miniversum 16.01.2010 um 08:57:35 Uhr
Goto Top
Wenn es nur drum geht das die Zeit syncron ist gehts auch so:
echo %time% Datum gespeichert & echo %time% Datum gespeichert >> "%CD%/log/[%date%]- Logfile Server.txt"
Wenn das immer in einer Zeile steht wird die Zeitvariable nur einmal aufgelöst.
kuhnikuehnast
kuhnikuehnast 16.01.2010 um 10:42:05 Uhr
Goto Top
Hmm... Ich hab das ganze jetzt über eine CALL Prozedur versucht zu realisieren, da der log ja öfters verwendet wird und das ja so immer wieder geschrieben werden müsste:
@echo off
if not exist "%CD%/log/" mkdir "%CD%/log/"  

echo Hallo
echo.
call :ausgabe "Dies ist ein Test"  
echo Beendet

pause

	:ausgabe
	set Zeit=%time%
	echo %Zeit% %1 >> "%CD%/log/[%date%]- Logfile Server.txt"  
	echo %Zeit% %1
	goto :eof

pause

Allerdings habe ich jetzt folgends Problem:
Wenn ich als Parameter bei call einen Satz oder irgendwas mit Leerzeichen übergeben will, muss ich das ja irgendwie in Anführungszeichen setzen, da sonst ja nur das erste Wort bis zum ersten Leerzeichen übergeben wird. Dummerweise werden dann aber die Leerzeichen mit übergeben, was ich ja eigentlich nicht möchte. Gibt es da eine Möglichkeit, dass ich als Parameter eben einen ganzen Satz übergeben kann ohne Leerzeichen?

lg Kuhni
kuhnikuehnast
kuhnikuehnast 16.01.2010 um 10:47:21 Uhr
Goto Top
Juhuu! Problem selbst gelöst bekommen:

%1 entweder durch %~1 ersetzen --> Alles in Anführungszeichen, nur ohne diese

noch einfacher: %~ --> einfach alles wird übergeben, Anführungszeichen werden nicht mehr benötigt! face-smile

lg Kuhni
bastla
bastla 16.01.2010 um 10:49:05 Uhr
Goto Top
Hallo kuhnikuehnast!
Gibt es da eine Möglichkeit, dass ich als Parameter eben einen ganzen Satz übergeben kann ohne Leerzeichen?
Ich nehme an, Du meintest nicht "Leerzeichen", sondern "Anführungszeichen" ...
@echo off & setlocal
if not exist "%CD%/log/" mkdir "%CD%/log/"  

echo Hallo
echo.
call :ausgabe "Dies ist ein Test"  
echo Beendet
pause
goto :eof

	:ausgabe
	set Zeit=%time%
	echo %Zeit% %~1 >> "%CD%/log/[%date%]- Logfile Server.txt"  
	echo %Zeit% %~1
	goto :eof
[Edit] Etwas zu langsam ...
noch einfacher: %~ --> einfach alles wird übergeben, Anführungszeichen werden nicht mehr benötigt! face-smile
Um den gesamten, ohne Anführungszeichen übergebenen, Text auszugeben, ist (bei mir unter XP) die Schreibweise
echo %*
erforderlich
[/Edit]

Grüße
bastla

P.S.: Ich finde %CD% weiterhin überflüssig ...