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

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

Ausgedruckt am: 19.11.2024 um 23:11 Uhr

retobl
retobl 05.05.2010 um 11:41:05 Uhr
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
Rocky112
Rocky112 05.05.2010 um 11:47:59 Uhr
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!
77559
77559 05.05.2010 um 11:48:14 Uhr
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
Rocky112
Rocky112 05.05.2010 um 11:55:57 Uhr
Goto Top
hey supergeil, danke!

so ist es perfekt!!!

Vielen Dank!