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-Key: 148522

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

Printed on: April 19, 2024 at 23:04 o'clock

Member: athi1234
athi1234 Aug 06, 2010 at 14:36:01 (UTC)
Goto Top
Schonmal robocopy probiert? Damit sollte es möglich sein, die Dateien zu kopieren und Vorgang zu loggen.
Member: bastla
bastla Aug 06, 2010, updated at Oct 18, 2012 at 16:43:03 (UTC)
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 ...
Member: kkboy94
kkboy94 Aug 06, 2010 at 15:01:09 (UTC)
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
Member: kkboy94
kkboy94 Aug 06, 2010 at 15:03:32 (UTC)
Goto Top
Nochmal Hallo,

Da war ich wohl etwas zu langsam, aber das gleiche hab ich ja auch gemacht.
Member: Connor1980
Connor1980 Aug 09, 2010, updated at Oct 18, 2012 at 16:43:05 (UTC)
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
Member: bastla
bastla Aug 09, 2010 at 07:08:38 (UTC)
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
Member: Connor1980
Connor1980 Aug 09, 2010 at 10:34:26 (UTC)
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]
Member: bastla
bastla Aug 09, 2010 at 12:12:17 (UTC)
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]
Member: kkboy94
kkboy94 Aug 09, 2010 at 17:11:20 (UTC)
Goto Top
Es würde mich auch mal interressieren, ob sich denn schon was getan hat...
Member: Biber
Biber Aug 09, 2010 at 17:17:33 (UTC)
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]