rocky112
Goto Top

Ordner per BAT Datei kopieren und LOG FILE erstellen

Hi Leute,

ich möchte einen Ordner kopieren. Ich möchte aber, dass er mir nach jeder Datei einen Eintrag in mein LOGFILE macht. Wie kriege ich das hin?

Vielen Dank schonmal.

@Echo off 
Echo ACHTUNG: Dieses Programm sichert jetzt easyVet!
ping -n 5 localhost > nul 
Echo .
Echo ------------------------------------------------------
net stop "VetZ Online Service"  
net stop "POET Object Server"  
ping -n 5 localhost > nul 
>>Z:\Dokumente\Administration\Logfiles\easyVet_Sicherung.Log  Echo Datum: %date%
Echo %time% SCHRITT 1 erfolgreich! >>Z:\Dokumente\Administration\Logfiles\easyVet_Sicherung.Log 
ECHO ************ SCHRITT 1 erfolgreich! ************
Echo .
Echo .
Echo ------------------------------------------------------
Echo Kopiervorgang wird gestartet!
Echo .
Echo .

Xcopy "C:\VetZ\easyVET\base\*.*" "Y:\easyVet\base\*.*" /S /M /Y  
 
Echo .
Echo Der Kopiervorgang war erfolgreich.
Echo .
Echo %time% SCHRITT 2 erfolgreich! >>Z:\Dokumente\Administration\Logfiles\easyVet_Sicherung.Log 
Echo ************ SCHRITT 2 erfolgreich! ************
Echo .

Echo ------------------------------------------------------
net start "VetZ Online Service"  
net start "POET Object Server"  
Echo %time% SCHRITT 3 erfolgreich! >>Z:\Dokumente\Administration\Logfiles\easyVet_Sicherung.Log 
Echo ************ SCHRITT 3 erfolgreich! ************

Echo .
Echo **********************************************************************
Echo %time% Das Programm wurde ordnungsgemaess ausgefuehrt. Ende >>Z:\Dokumente\Administration\Logfiles\easyVet_Sicherung.Log 
Echo *** Das Programm wurde ordnungsgemaess ausgefuehrt. Ende erreicht. ***
Echo **********************************************************************
Echo .
EXIT

Im Endeffekt wird folgender Ordner "C:\VetZ\easyVET\base\*.*" von der Festplatte auf ein Netzwerklaufwerk kopiert.
Ich möchte jetzt, dass er mir in das LOGFILE schreibt, welche Dateien kopiert wurden und ob erfolgreich.

Vielen Dank!

Content-ID: 148522

Url: https://administrator.de/forum/ordner-per-bat-datei-kopieren-und-log-file-erstellen-148522.html

Ausgedruckt am: 23.12.2024 um 11:12 Uhr

athi1234
athi1234 06.08.2010 um 16:36:01 Uhr
Goto Top
Schonmal robocopy probiert? Damit sollte es möglich sein, die Dateien zu kopieren und Vorgang zu loggen.
bastla
bastla 06.08.2010, aktualisiert am 18.10.2012 um 18:43:03 Uhr
Goto Top
Hallo Rocky112!

Im einfachsten Fall mit folgender Zeile 19:
>>Z:\Dokumente\Administration\Logfiles\easyVet_Sicherung.Log Xcopy "C:\VetZ\easyVET\base\*.*" "Y:\easyVet\base\*.*" /S /M /Y
... und, bevor Du fragst: eine parallele Ausgabe auf den Bildschirm und in die Datei ist nicht (ohne Zusatztools oder "Klimmzüge" - siehe dazu NeonZeros Anleitung) möglich - Du könntest aber im einfachsten Fall (wie bei "Lösung 3" beschrieben) anstelle des Log-Files eine Temp-Datei verwenden und nach dem Kopieren den Inhalt per "type" in das Log-File schreiben und dann nochmals auf den Bildschirm ...

Grüße
bastla

P.S.: Der Pfad "Z:\Dokumente\Administration\Logfiles\easyVet_Sicherung.Log" wäre ein klassisches Beispiel für eine sinnvolle Verwendung von Variablen ...
kkboy94
kkboy94 06.08.2010 um 17:01:09 Uhr
Goto Top
Hallo erstmal,
ich habe mir mal die Zeit genommen und die Batch "ordentlicher" bzw. "übersichtlicher" (augenfreundlicher) gemacht.
@echo off &setlocal
chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul
title easyVet-Sicherung

set log="Z:\Dokumente\Administration\Logfiles\easyVet_Sicherung.Log"  
if exist %log% del %log%

Echo ACHTUNG: Dieses Programm sichert jetzt easyVet!
ping -n 5 localhost > nul 
Echo .
Echo ------------------------------------------------------
net stop "VetZ Online Service"  
net stop "POET Object Server"  
ping -n 5 localhost > nul 
>>%log% Echo Datum: %date%
>>%log% Echo easyVet-Sicherung
>>%log% Echo.
>>%log% Echo %time% SCHRITT 1 erfolgreich!
ECHO ************ SCHRITT 1 erfolgreich! ************
Echo .
Echo .
Echo ------------------------------------------------------
Echo Kopiervorgang wird gestartet!
Echo .
Echo .

::Hier wird erst kopiert, und danach in's Log geschrieben 
Xcopy "C:\VetZ\easyVET\base\*.*" "Y:\easyVet\base\*.*" /S /M /Y  
>>%log% Xcopy "C:\VetZ\easyVET\base\*.*" "Y:\easyVet\base\*.*" /S /M /Y   

:: Überprüfung ob alles glatt gelaufen ist
:: Wenn ja, dann erscheint "Der Kopiervorgang war erfolgreich." 
:: Wenn nicht, dann beendet sich das programm nach kurzer Zeit selbst.
if "%errorlevel%" EQU "0" (  
Echo .
Echo Der Kopiervorgang war erfolgreich.
) else (
echo Da ist was schief gelaufen.
echo Der Kopiervorgang war nicht erfolgreich.
echo Das programm beendet sich selbst.
ping -n 5 localhost > nul 
goto :eof
)
Echo .
>>%log% Echo %time% SCHRITT 2 erfolgreich!
Echo ************ SCHRITT 2 erfolgreich! ************
Echo .

Echo ------------------------------------------------------
net start "VetZ Online Service"  
net start "POET Object Server"  
>>%log% Echo %time% SCHRITT 3 erfolgreich!
Echo ************ SCHRITT 3 erfolgreich! ************

Echo .
Echo **********************************************************************
>>%log% Echo %time% Das Programm wurde ordnungsgem%ae%ss ausgef%ue%hrt. Ende 
Echo *** Das Programm wurde ordnungsgem%ae%ss ausgef%ue%hrt. Ende erreicht. ***
Echo **********************************************************************
Echo .
goto :eof

Ich hoffe du aknnst es gebrauchen, so wie ich das jetzt mal gemacht habe

MfG Karsten
kkboy94
kkboy94 06.08.2010 um 17:03:32 Uhr
Goto Top
Nochmal Hallo,

Da war ich wohl etwas zu langsam, aber das gleiche hab ich ja auch gemacht.
Connor1980
Connor1980 09.08.2010, aktualisiert am 18.10.2012 um 18:43:05 Uhr
Goto Top
Hallo,

Zitat von @bastla:
... und, bevor Du fragst: eine parallele Ausgabe auf den Bildschirm und in die Datei ist nicht (ohne Zusatztools oder
"Klimmzüge" - siehe dazu NeonZeros Anleitung) möglich -

(x)copy-st du noch oder robocopy-st du schon? face-wink Mit Robocopy und dem Parameter /TEE ist gewünschtes möglich.

Grüße
bastla
bastla 09.08.2010 um 09:08:38 Uhr
Goto Top
@Connor1980
Mit Robocopy und dem Parameter /TEE ist gewünschtes möglich.
Das ist ja mal was ganz Neues ... face-wink

"robocopy" wurde bereits im ersten Kommentar vorgeschlagen ...

Grüße
bastla
Connor1980
Connor1980 09.08.2010 um 12:34:26 Uhr
Goto Top
[OT]
@bastla:
Zitat von @bastla:
"robocopy" wurde bereits im ersten Kommentar vorgeschlagen ...
Aber 1. nicht der entsprechende Parameter dafür und 2. auch nicht in desem Zusammenhang. Und es soll ja noch Menschen geben, die Dokumentationen, etc. nicht lesen können ... face-wink

Grüße
[/OT]
bastla
bastla 09.08.2010 um 14:12:17 Uhr
Goto Top
[OT]
@Connor1980
Und es soll ja noch Menschen geben, die Dokumentationen, etc. nicht lesen können ... face-wink
Das war jetzt aber sehr freundlich formuliert ... face-wink
Ansonsten ist "robocopy" sicherlich eine gute Wahl (besonders, wenn es schon Bestandteil des von Rocky112 verwendeten, aber nicht genannten, BS sein sollte) ...

Grüße
bastla
[/OT]
kkboy94
kkboy94 09.08.2010 um 19:11:20 Uhr
Goto Top
Es würde mich auch mal interressieren, ob sich denn schon was getan hat...
Biber
Biber 09.08.2010 um 19:17:33 Uhr
Goto Top
[OT]
Zitat von @kkboy94:
Es würde mich auch mal interressieren, ob sich denn schon was getan hat...
Hmm... veilleicht noch nicht mit dem *Finger kreuz* *Knoblauch hochhalt* Dokumentation-Lesen oder dem Robocopy....

Aber /TEE ist bestimmt schon in Arbeit...
[/OT]