concurve
Goto Top

Ordner vergleichen, bei gleichem Datum, Inhalt zusammenführen

Guten Tag,

ich würde bei einem "Problem" Hilfe benötigen. Leider bin ich was *.bat angeht ziemlich Ahnungslos und hoffe auf ein paar gute Ideen und oder Hilfestellungen.

Gegeben:
Viele Order mit der Benennung: Jahr Monat Tag (JJJJ MM DD)
Viele Order mit der Benennung: Jahr Monat Tag beliebigerText (JJJJ MM DD blablablablabla)

Nun suche ich eine Funktion die es mir ermöglicht, alle in einem "Ziel" befindlichen Order miteinander zu vergleichen. Bei dem Vergleich
soll jedoch nur das Datum (JJJJ MM DD) beachtet werden und nicht der dann evtl. folgende Text.
Hat diese Funktion nun zweimal das gleiche Datum gefunden, sollen die Dateien die sich in dem Ordner "JJJJ MM DD" in den
Ordner "JJJJ MM DD blablablablabla verschoben werden. Der dann leere Ordner JJJJ MM DD kann gelöscht werden.


Kann mir hierzu jemand einen Tipp geben, z.B. nach welchen Funktionen ich suchen muss oder was ich beachten muss? Ich habe zwar
schon Möglichkeiten gefunden Daten zu kopieren, zu löschen oder auf Vorhandensein prüfen zu können aber die von mir gewünschte
Kombination bekomme ich aufgrund meines nicht vorhandenen Wissens leider nicht hin.

Um Ratschläge bin ich dankbar!

Gruß
con

Content-ID: 262877

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

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

colinardo
colinardo 10.02.2015 aktualisiert um 10:05:44 Uhr
Goto Top
Hallo concurve, Willkommen auf Administrator.de!
Das könnte z.B. so aussehen:
@echo off & setlocal
set "folder=C:\ordner"  
for /D %%a in ("%folder%\???? ?? ??") DO (  
   for /D %%b in ("%%a ?*") DO robocopy "%%a" "%%b" * /MIR /MOVE  
)
Grüße Uwe
Concurve
Concurve 10.02.2015 um 19:57:43 Uhr
Goto Top
Hallo colinardo,

erst einmal vielen Dank für die Willkommenswünsche!

Ich habe Deine Zeilen mal in eine *.bat geschrieben und einen Probelauf absolviert. Die Funktion ist super und macht auch
eigentlich genau das was ich möchte ... aber ... bedauerlicherweise werden die Daten (Bilder, Videos und Ordner) in den Zielordnern
gelöscht.
Somit habe ich in den Ordnern mit der Bezeichnung "JJJJ MM DD blablablablabla" dann ausschließlich die Daten von "JJJJ MM DD".


Habe nun mal die *.bat umgeschrieben in:

@echo off & setlocal
set "folder=C:\Test"
for /D %%a in ("%folder%\???? ?? ??") DO (
for /D %%b in ("%%a ?*") DO robocopy "%%a" "%%b" * /Move /Mov
)

Damit funktioniert mein Vorhaben ... Nun aber noch einmal die Frage an Dich oder auch an alle anderen - Ist diese *bat "sauber", also
werden die Daten inkl. aller Attribute hiermit kopiert. Ich bin das zwar alles durchgegangen und konnte keinen Unterschied feststellen
aber ich bin eben auch kein IT'ler und bin mir daher nicht so 100% sicher.

Dennoch vielen Dank für Deine prima Unterstützung colinardo!

Gruß
con
colinardo
colinardo 11.02.2015 aktualisiert um 00:15:27 Uhr
Goto Top
Zitat von @Concurve:

Hallo colinardo,
.. bedauerlicherweise werden die Daten (Bilder, Videos und Ordner) in den
Zielordnern gelöscht.
Ah, OK wusste nicht das das gewünscht war face-wink sorry, da war ich gerade mit dem Kopf bei einem anderen Script...
Für den Fall reicht es wenn du für Robocopy anstatt /MIR den Parameter /E nimmst.
Nun aber noch einmal die Frage an Dich oder auch an alle anderen - Ist diese *bat
"sauber", also werden die Daten inkl. aller Attribute hiermit kopiert.
Ohne weitere Parameter werden
Data
Attributes
Timestamps
kopiert. Willst du wirklich alles inkl. Berechtigungen mitkopieren erreichst du das mit dem zusätzlichen Parameter /COPYALL das entspricht dem Parameter /copy:DATSOU.
Es werden also zusätzlich ACLs/Owner/Auditing Informationen der Dateien und Ordner mit übertragen.
Siehe die Referenz zu Robocopy.

Also zusammengefasst sähe die Robocopyzeile dann so aus:
robocopy "%%a" "%%b" * /E /COPYALL /MOVE
Grüße Uwe