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

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

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

Member: rubberman
rubberman Aug 31, 2011 at 12:18:28 (UTC)
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
Member: Skyemugen
Skyemugen Aug 31, 2011 at 12:22:22 (UTC)
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
Member: snowdream
snowdream Aug 31, 2011 at 13:16:58 (UTC)
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
Member: bastla
bastla Aug 31, 2011 at 13:27:53 (UTC)
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
Member: snowdream
snowdream Aug 31, 2011 at 14:09:16 (UTC)
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.