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

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

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

Member: colinardo
colinardo Feb 10, 2015 updated at 09:05:44 (UTC)
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
Member: Concurve
Concurve Feb 10, 2015 at 18:57:43 (UTC)
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
Member: colinardo
colinardo Feb 10, 2015 updated at 23:15:27 (UTC)
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