snowdream
Goto Top

Logfile schreiben mit xcopy funktioniert nicht

Hallo Zusammen,

ich bin neu hier im Forum, lese aber schon längere Zeit mit und konnte mir auch die ein oder andere Anregung holen. Jetzt komme ich allerdings nicht weiter, vielleicht hat ja einer die Lösung für mich.

Aus einem Quellordner sollen alle Daten kopiert und in den Zielordner verschoben werden. Es sollen nur neue Dateien (nicht vorhandene Dateien kopiert werden.
Dafür ist der Schalter /D zuständig. Bis hier hin funktioniert auch alles wie gewünscht, allerdings werden die kopierten Dateien nicht ins Logfile geschrieben.
Lass ich den Schalter /D weg, dann wird das Logfile richtig geschrieben, allerdings werden jetzt immer alle Dateien kopiert, auch wenn diese schon vorhanden sind.
Dies will ich aber nicht.

@ECHO OFF

:: *******************************************************************************************************************************************************
:: Ordner komplett mit Unterordner kopieren, vorhandene Dateien nicht überschreiben

if not exist D:\Ziel (
MD D:\Ziel														>NUL
ECHO Zielordner angelegt									        >> c:\log.txt
)
xcopy Quelle\*.* D:\Ziel /D /Y /E /H /K /R							        >NUL
ECHO.															>> c:\log.txt
ECHO folgende Dateien wurden kopiert							>> c:\log.txt
xcopy Quelle\*.* D:\Ziel /D /Y /E /H /K /R	 							>> c:\log.txt
ECHO.															>> c:\log.txt

[Edit Biber] Codeformatiert [/Edit]

Content-ID: 172371

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

rubberman
rubberman 31.08.2011 um 14:18:28 Uhr
Goto Top
Hallo snowdream, willkommen im Forum.

Auf den ersten Blick fällt auf, dass du 2 XCOPY Zeilen im Batch hast. Bei der ersten leitest du die Ausgabe ins Nirvana um. Nun sind aber bereits alle Dateien kopiert. Was sollte dann beim 2. XCOPY noch passieren?

Grüße
rubberman
Skyemugen
Skyemugen 31.08.2011 um 14:22:22 Uhr
Goto Top
Aloha,

wahrscheinlich (Vermutung) wollte er noch den Schalter /L in das zweite Vorkommen setzen ... wobei dann nichts mehr da ist, was neuer wäre ...
Irgendwie blick ich nicht 100% durch hier heute aber eventuell sollte sich der TE mal mit robocopy befassen (weil log und so)

greetz André

P.S.: if not exist D:\Ziel echo Ist xcopy schoenegal, erstellt es selber
snowdream
snowdream 31.08.2011 um 15:16:58 Uhr
Goto Top
Zitat von @rubberman:

Bei der ersten leitest du die Ausgabe ins Nirvana um.

Hallo rubberman,

wieso ins Nirvana, der Befehl wird doch ausgeführt? ">NUL" verhindert lediglich die Ausgabe im CMD-Fenster, kann man natürlich auch weglassen, funktioniert dann immer noch.
Beim 2. "xcopy" geschieht exakt das Selbe, nur hier wird nicht kopiert, sondern ins Logfile geschrieben. Das funktioniert auch, aber halt nicht mit dem Schalter /D.

Gruß
snowdream
bastla
bastla 31.08.2011 um 15:27:53 Uhr
Goto Top
Hallo snowdream und willkommen im Forum!

Was soll denn beim zweiten "xcopy" noch kopiert werden? Alles, was gepasst hat, ist ja mit dem ersten "xcopy" schon in das Ziel befördert worden ...

... daher könntest Du das Ganze reduzieren auf:
ECHO folgende Dateien wurden kopiert >> c:\log.txt
xcopy Quelle\*.* D:\Ziel\ /DYEHKR >> c:\log.txt
ECHO. >> c:\log.txt
Alternativ wäre unter Verwendung des angesprochenen Schalters "/L" vorweg eine Simulation möglich:
ECHO folgende Dateien werden kopiert>> c:\log.txt
xcopy Quelle\*.* D:\Ziel\ /DYEHKR /L >> c:\log.txt
ECHO. >> c:\log.txt
Grüße
bastla
snowdream
snowdream 31.08.2011 um 16:09:16 Uhr
Goto Top
Hallo bastla,

jetzt ist mir ein Licht aufgegangen! Ich bin immer davon ausgegangen, das ich die Umleitung ins Logfile mit einem "eigenen Befehlssatz" bewerkstelligen muss, deshalb das zweite "xcopy".
Dadurch, dass beim Ersten "xcopy" schon alle Dateien aktualisiert wurden, hat er natürlich beim Zweiten "xcopy" nichts mehr kopiert und auch nicht ins Logfile geschrieben. Oh man...
Vielen Dank an Alle für die superschnelle Hilfe.