blackangel
Goto Top

Kontrollieren ob Dateien vorhanden sind und wenn nicht kopieren(robocopy)

Hallo,
ich habe 2 Verzeichnise mit etlichen Unterverzeichnise.
Ich wollte diese beide Verzeichnise vergleichen und wenn eine Datei fehlt sollte diese mit Hilfe von Robocopy kopiert werden.
Warum nur neue Dateien hinzugefügt werden sollen?
Ganz einfach es sind Dateien die immer im einen Verzeichnis geändert werden diese aber in dem anderen noch so als Orginal bestehen muss.

Robocopy daher da es zwischen den beiden Verzeichnise auch Verbindungsabbrüche sein könnten und um das ganze nicht nochmal zu ldaen Robocopy.

Ich habe mir jetzt mal Gedanken gemacht und habe gedacht man könnte doch das eine Verzeichnis inkl. Unterverzeichniss in eine Textfile einlesen.
Dies habe ich soweit hinbekommen.
Leider weiß ich jetzt nich mehr weiter wie ich diese Textfile mit dem anderen Verzeichnis vergleichen lässt.
Es müßte ja reintheortisch ausgelesen und verglichen werden.

Hier mal mein aktueller Code:
@echo on & setlocal
::Datei Src und Des dir werden angegeben
::
set src_dir=D:\Test
set des_dir=C:\Test
:Source Verzeichnis auslesen
for /f "delims=" %%a in ('dir /b /s /a-d "%src_dir%"') do (  
echo %%a >> "C:\test\TEST1.txt")  

Wie gehts weiter? oder mache ich es umständlich?

Content-Key: 69790

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

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

Member: Biber
Biber Sep 29, 2007 at 13:06:37 (UTC)
Goto Top
Moin Blechengel,

von der Strategie her würde ich es mit XCopy statt mit RoboCopy angehen.
Aber das liegt zum Teil daran, dass ich bei XCopy die Parameter (grob) im Kopf habe und nicht erst in der Doku nachlesen muss - wahrscheinlich ist es mit RobyCopy analog möglich.

Also: XCopy hat drei Schalter, mit denen Du Dein Ziel erreichen kannst:
.....
  /EXCLUDE:Datei1[+Datei2][+Datei3]...
            Gibt eine Liste von Zeichenfolgen an. Jede Zeichenfolge
            sollte in einer einzelnen Zeile in der Datei angezeigt werden.
            Wenn eine der Zeichenfolgen Teil des absoluten Verzeichnispfads
            der zu kopierenden Datei ist, wird diese Datei vom
            Kopiervorgang ausgeschlossen. Beispiel: Bei der
            Zeichenfolge \obj\ oder .obj werden alle Dateien
            unterhalb des Verzeichnisses OBJ bzw. alle Dateien mit
            der Erweiterung .obj vom Kopiervorgang ausgeschlossen.
  /L        Listet die Dateien auf, die ggf. kopiert werden.
  /U        Kopiert nur Dateien, die im Zielverzeichnis vorhanden sind.
Einen weiteren Schalter hat XCopy auch noch, der Dir eventuell nützt:
  /Z        Kopiert Dateien in einem Modus, der einen Neustart ermöglicht.


Mimik:
  • mit "XCopy quelle ziel /s /u /l >%temp%\exclude.lst" eine Liste aller Dateien erzeugen, die es in "quelle" UND in "ziel" gibt.
  • Diese in einem 2. Schritt als "excude.lst" angeben - denn die sollen ja NICHT kopiert werden.

....
xcopy quelle ziel /s /L /u >%temp%\exclude.lst
xcopy quelle ziel /s /Exclude:%temp%\exclude.lst /Z

Gruß
Biber
Member: Blackangel
Blackangel Sep 29, 2007 at 14:40:45 (UTC)
Goto Top
Hi Biber,
also das hört sich ja mal Klasse an! Was ich allerdings vergessen habe zusagen das auch Dateien die nicht mehr vorhanden sind gelöscht werden sollen.
Ich schau jetzt mal ob es in Robocopy was ähnliches gibt wie du hier mit Xcopy gemacht hast.
Dann melde ich mich wieder!
Member: Blackangel
Blackangel Sep 29, 2007 at 15:01:25 (UTC)
Goto Top
So habe eben nochmal bisschen in Robocopy ein bisschen rumgekramt!
Werde mich auch mal an die Deutsche Übersetzung der Hilfe machen von Robocopy hier gibt es nämlich folgende optionen /XC /XO /XN
Das heißt exclude(also ohne) Changed(geänderte) older (älter) oder Newer (neuer)
und so kopiert er nur die Dateien die noch nicht angelegt sind!

Gruß
Tim
Member: ahe
ahe Oct 04, 2007 at 09:41:40 (UTC)
Goto Top
Schöne Web-Seite zum Thema:

http://dr-luthardt.de/windows.htm?tip=robocopy

mfg
Axel