ghrudius

Per Batch Verzeichnis A mit B vergleichen und Unterschiede in C kopieren

Hallo,
ich versuche grade verzeifelt, per Batch ein Problem von mir zu lösen und automatisieren, ohne zusätzliche Software nutzen zu müssen.

Ich habe zwei Verzeichnisse, A ist das Soll Verzeichnis, B das Ist-Verzeichnis.

Alle Dateien aus A, welche in B fehlen oder sich von der Version in B unterscheiden, benötige ich in einem dritten Verzeichnis C.

Mein aktueller Lösungsansatz beinhaltet 2 Schritte:
Ich kopiere alles von A nach C, und lösche dann alles was identisch in B ist raus.

Dazu habe ich folgendes Script mit Hilfe von Google zusammengebastelt:
robocopy C:\TEST\A C:\TEST\C /E 

for /R C:\TEST\B\ %%I in (*.*) do (
for /R C:\TEST\C\ %%J in (*.*) do (
IF .%%~nI%%~xI.==.%%~nJ%%~xJ. (DEL "%%J")))  

Bei diesem Script werden mir aber alle Dateien welche in B und C den gleichen Namen haben gelöscht. Ich bekomme es nicht hin, dass auch eine Änderung des Inhalts geprüft wird, hab schon mit fc getestet, aber keinen funktionierenden Code hinbekommen.

Bin neu hier, und auch relativ neu in der Batch-Programmierung, hoffe es kann mir jemand bei meinem Problem helfen, oder vielleicht einen anderen Lösungsansatz bieten.

Vielen Dank
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 379134

Url: https://administrator.de/forum/per-batch-verzeichnis-a-mit-b-vergleichen-und-unterschiede-in-c-kopieren-379134.html

Ausgedruckt am: 15.05.2025 um 11:05 Uhr

Kraemer
Kraemer 04.07.2018 um 12:09:30 Uhr
Goto Top
136588
136588 04.07.2018 aktualisiert um 15:49:33 Uhr
Goto Top
Hier mit Powershell:
$folderA = 'D:\FolderA'  
$folderB = 'D:\FolderB'  
$folderC = 'D:\FolderC'  
compare (gci $folderA -File | Get-FileHash -Algorithm SHA256) (gci $folderB -File | Get-FileHash -Algorithm SHA256) -Property Hash -PassThru | ?{$_.SideIndicator -eq '<='} | copy-item -Destination $folderC -Force  
Ghrudius
Ghrudius 05.07.2018 um 16:25:06 Uhr
Goto Top
Vielen Dank.

Ein Kollege hat es aber komplett mit Robocopy gelöst.

Er kopiert alles von A nach C, und verschiebt dann alle identischen Dateien von C nach B.

@echo off
REM --- Variablen setzen

REM -------------------------------------
REM -Verzeichnis Ursprung-
REM -------------------------------------
set source=C:\TEST\A     


REM ------------------------------------
REM -Verzeichnis mit welchem Verglichen werden soll-
REM ------------------------------------
set dest=C:\TEST\B\


REM --------------------------------------------------------------------------
REM -Verzeichnis in dem die geänderten oder neuen Dateien gespeichert werden -
REM --------------------------------------------------------------------------
set diff=C:\TEST\C\


REM --------------------------------------------------------------
REM - folgende Verzeichnisse aus A auslassen (mit Leerzeichen trennen) -
REM --------------------------------------------------------------
Set "exclu=Verz1 Verz2"  


REM ----------------------------------------------------------------------
REM ----  alle Dateien A ins "NEUE" Verzeichnis spielen ----  
REM ----------------------------------------------------------------------

robocopy %source% %diff% /s /xd %exclu% 


REM ---------------------------------------------------------------------------------------------------
REM ----  alle Dateien aus A verschieben in B,  aber nur die, die gleich sind ----
REM ---------------------------------------------------------------------------------------------------

robocopy %diff% %dest% /E /MOVE /IS /XL /XN /XC