rocky112
Goto Top

Zeile aus BAT Datei in Log File schreiben

Hallo Freunde,

ich habe eine BAT Datei, um 4 Dateien zu sichern. Jetzt möchte ich, dass die BAT Datei bei einem erfolgreichen Kopiervorgang eine Zeile in eine Log Datei schreibt.

Hallo,

also das ist mal die BAT Datei:
start C:\Pfad\Datensicherung\poetsicherung.exe an
ping -n 15 localhost > nul


xcopy "C:\Pfad\Pfad\base\_objects.dat" "Y:\Pfad\base" /Y
xcopy "C:\Pfad\Pfad\base\objects.dat" "Y:\Pfad\base" /Y
xcopy "C:\Pfad\Pfad\base\_objects.idx" "Y:\Pfad\base" /Y
xcopy "C:\Pfad\Pfad\base\objects.idx" "Y:\Pfad\base" /Y

C:\Pfad\Datensicherung\poetsicherung.exe aus

Das funktioniert bis jetzt auch sehr gut.
Ich hätte jetzt aber gern, dass er nach dem erfolgreichen kopieren der Dateien "_objects.dat, objects.dat, _objects.idx & objects.idx" eine Zeile in folgendem Style in eine Log Datei schreibt:


DATUM, Uhrzeit, Datei _objects.dat erfolgreich kopiert.
bzw.
DATUM, Uhrzeit, Datei _objects.dat NICHT erfolgreich kopiert.

ODER evtl sogar noch edler:

DATUM:
Uhrzeit, Datei _objects.dat erfolgreich kopiert.
Uhrzeit, Datei objects.dat erfolgreich kopiert.
Uhrzeit, Datei _objects.idx erfolgreich kopiert.
Uhrzeit, Datei objects.idx erfolgreich kopiert.
bzw
DATUM:
Uhrzeit, Datei _objects.dat NICHT erfolgreich kopiert.
Uhrzeit, Datei objects.dat NICHT erfolgreich kopiert.
Uhrzeit, Datei _objects.idx NICHT erfolgreich kopiert.
Uhrzeit, Datei objects.idx NICHT erfolgreich kopiert.


Die Log Datei sollte immer weiter laufen. Sprich, wenn ich erneut kopiere sollten die neuen Einträge oben hingeschrieben werden.

Geht das?

Vielen Dank!

Content-Key: 142168

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

Printed on: April 24, 2024 at 05:04 o'clock

Member: retobl
retobl May 05, 2010 at 09:41:05 (UTC)
Goto Top
Hallo
Du kannst zum Beispiel folgendes schreiben:

xcopy "C:\Pfad\Pfad\base\_objects.dat" "Y:\Pfad\base" /Y>>C:\logfiles\logfile.log

Im Prinzip wie Du die Ausgabe von Ping nach dem Device NUL ausgibst, kann es auch in eine Datei umgelenkt werden.
Wenn Du nur 1 '>' machst wird die Datei immer neu erzeugt. Mit 2 '>>' wird die Ausgabe an die bestehende datei angehängt.

In meinen Batch ermittle ich noch den namen der Batch Datei, damit ich der Log Datei automatisch den richtigen Namen vergeben kann.
In etwa so:
set LogDir=C:\LogFiles
set LogFile=%~n0.log
set LogFileDir=%LogDir%\%LogFile%

Dann würde ich folgendes schreiben:
xcopy "C:\Pfad\Pfad\base\_objects.dat "Y:\Pfad\base" /Y>>%LogFileDir%

Gruss
Reto
Member: Rocky112
Rocky112 May 05, 2010 at 09:47:59 (UTC)
Goto Top
Hi,

das sieht gut aus, aber ich sehe ja nur im Logfile
Dateiname
X Dateien kopiert.

Kann ich ned das Datum und die Uhrzeit im Log hinzufügen?

Vielen Dank!
Mitglied: 77559
77559 May 05, 2010 at 09:48:14 (UTC)
Goto Top
Hallo Rocky und Reto,

bitte formatiert den Code zur besseren Les-/Referenzier-barkeit unbedingt mit den dafür vorgesehenen in der Formatierungshilfe

Ansonsten würd ich es eher so machen:
@ECho off
start C:\Pfad\Datensicherung\poetsicherung.exe an
ping -n 15 localhost > nul
Set Quelle=C:\Pfad\Pfad\base\
Set Ziel=Y:\Pfad\base\
Set Log=X:\Dein.Log
>>%Log% Echo Datum: %date%

For %%A in (_objects.dat
             objects.dat
            _objects.idx
             objects.idx ) Do Call :DoCopy %%A

C:\Pfad\Datensicherung\poetsicherung.exe aus

Goto :Eof
:DoCopy ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Xcopy "%Quelle%%1" "%Ziel%" /Y  
IF %Errorlevel% EQU 0 (
  >>%Log% Echo %time% Datei %1 erfolgreich kopiert
) Else (
  >>%Log% Echo %time% Datei %1 NICHT kopiert, Fehler %Errorlevel%
)

Gruß
LotPings
Member: Rocky112
Rocky112 May 05, 2010 at 09:55:57 (UTC)
Goto Top
hey supergeil, danke!

so ist es perfekt!!!

Vielen Dank!