(x)copy: Nur noch nicht bestehende Dateien kopieren ab bestimmter Dateigröße

Mr. Brooks

Lt. Commander
Registriert
Aug. 2011
Beiträge
1.441
Hallo,

ich würde gern per Batch Dateien von meinem Downloadserver per Netzwerk auf den Rechner ziehen und wollte das per Batch machen. Der Netzwerkspeicher ist als LW-Buchstabe gemountet. Das kopieren nur noch nicht bestehender Dateien sollte laut Google-Suche mit

Code:
echo n|copy "quelle/*.* "ziel"

gehen. Es werden aber weiterhin Dateien überschrieben.

Vermutlich schwieriger wird es, wenn man nur Dateien kopieren will, die eine bestimmte Dateigröße haben? Ich habe in copy und xcopy keine entsprechende Funktion gefunden.

Mr. Brooks
 
robocopy "quelle" "ziel" /e

- das in eine .bat
- kopiert nur neue dateien
- hat der pfad keine leerzeichen, "" weglassen
 
würde auch robo empfehlen, da gibt es optionen für alter und grösse
 
Robocopy ist auf jeden Fall die beste Wahl. Alternative wäre noch über Powershell mit BITS.

Die Frage ist jetzt noch, ob du wirklich nur nicht vorhandene Dateien kopieren willst oder auch Dateien die neuer sind und somit die alten auf dem Rechner überschreiben?

Und kleiner Tipp, um zukünftige Probleme mit Robocopy zu vermeiden. Am Ende vom Pfad immer zwei Backslash! -> C:\bla\\
Code:
::#############################################################################
:: Fehlende Dateien kopieren (ältere, geänderte und fehlende Dateien ignorieren)
::##############################################################################
@ECHO OFF
CLS

::==============================================================================
SET SRC=C:\Daten\\
::==============================================================================
:: = Quellverzeichnis
:: ___ Ohne Anführungszeichen! 
:: ___ Am Ende zwei Backslash \\ um falsch interpretierte Pfad zu vermeiden
:: ___ Umgebungsvariablen erlaubt 


::==============================================================================
SET DST=D:\Daten\\
::==============================================================================
:: = Zielverzeichnis
:: ___ Hinweise siehe bei "Quellverzeichnis"


::============================================================================== 
SET DAT=*.*
::==============================================================================
:: = Dateimaske. -> Dateinamen mit Platzhaltern/Wildcards 
:: ___ z. B. *.* (alle Dateien) *.txt (Textdateien) *.lnk (Verknüpfungen)


robocopy "%SRC%" "%DST%" "%DAT%" /E /MT /XC /XN /XO /R:10 /W:30 /LOG:"%~dp0RoboLog.log"
:: = Kopieren starten
"%~dp0RoboLog.log"
:: = Logfile nach Kopiervorgang mit Standard-Editor öffnen/anzeigen


::##################################################################################
:: /E   = kopiert Unterverzeichnise inkl. leerer Ordner, alternative /S
:: /MT  = Multithreaded kopieren. (seit Windows 7/Server 2008 R2) von Vorteil bei vielen kleinen Dateien
:: ________ man kann auch die Anzahl der Thread angeben -> /MT:32. 
:: ________ Mehr ist nicht immer besser! Zieht alles in die Knie! Default ohne Angabe der Zahl = 8 Threads
:: /XC  = Schließt geänderte Dateien aus (im Quellverzeichnis)
:: /XN  = Schließt neuere Dateien aus (im Quellverzeichnis)
:: /XO  = Schließt ältere Dateien aus (im Quellverzeichnis)
:: /R   = Anzahl von Wiederholungsversuchen (pro Datei), falls der Kopiervorgang fehlschlägt
:: /W   = Wartezeit zwischen den Versuchen von /R in Sekunden
:: /Log = versteht sich glaub von selbst
::##################################################################################
 
Zuletzt bearbeitet:
Falls eine gleichnamige Datei vorhanden ist, soll diese nicht kopiert werden. Egal ob die neuer ist oder nicht.
 
Hab das Skript oben angepasst und auch ne kurze Erklärung zu den einzelnen Schaltern hinzugefügt. ;)
 
Zurück
Oben