Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Zwei Verzeichnisse vergleichen und Dateien ersetzen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.05.2019, 11:12 Uhr
Majo



Hallo zusammen,

ich habe ein Problem an welchem ich nun seit 4 Stunden verzweifel.

Ich habe ca. 7000 Bilder in einem Ordnerverzeichnis von ca. 18000 Ordnern.
Diese Bilder habe ich mir per Explorer Suchfunktion herauskopiert und komprimiert.

Nun habe ich die komprimierten Bilder in einem Ordner und möchte diese in das originale Verzeichnis an die ursprüngliche Stelle kopieren und die originalen ersetzen.

Die Dateinamen der alten und neuen Bilder sind identisch.

Leider kann man in die Explorer Suchfunktion keine Dateien ziehen und so die originalen ersetzen. Total Commander und Co. bringen mich auch nicht weiter da die Bilder immer nur in den Hauptordner des riesen Verzeichnisses kopiert werden.

Hat jemand eine Idee? Geht das eventuell mit einem Script?

Meine Idee jetzt wäre, dass ein Script o.ä. sich nach und nach die Dateien anschaut, diese im Verzeichnis sucht und dann ersetzt.
Ich kann mir nicht vorstellen, dass das so schwer ist. Habe aber leider überhaupt keine Programmierkentnisse.

Vielen Dank schonmal!
Liebe Grüße
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.05.2019, 13:46 Uhr
ao

(Operator)


7000 Files, 18000 Ordner, wow, das ist ne Hausnummer.

Im ersten naiven Ansatz würde man für jede der 7000 Quelldateien den Zielbaum durchlaufen, bis man die Zieldatei gleichen Namens gefunden hat, und sie dort ersetzen. Nachteil: Man fängt immer wieder bei Null an zu suchen.

Alternativ könnte man den Zielbaum einmal komplett durchlaufen und alle enthaltenen Dateien indizieren, d.h. in diesem Fall eine Liste anlegen mit allen Dateinamen und dem Pfad, in dem sie liegen. Dann sucht man für die 7000 Quelldateien aus dieser Liste die Pfade heraus und ersetzt die dort stehenden Zieldateien. Nachteil hier: Wenn die 18000 Zielverzeichnisse extrem viele Dateien enthalten (was durchaus sein kann, wenn das ein Fotoarchiv ist), dauert der Aufbau der Liste sehr lange (falls er überhaupt in den Speicher geht), und das Suchen darauf auch, und es wird viel Information zusammengetragen, die später überhaupt nicht gebraucht wird.

Am besten scheint mir zu sein, mit einer Liste der Quelldateien über den Zielbaum zu laufen, in jedem Verzeichnis zu schauen, ob passende Zieldateien enthalten sind, und diese zu ersetzen und gleichzeitig aus der Suchliste zu entfernen. Vorteil: Man iteriert den Baum nur einmal, und die Liste der zu suchenden Dateien wird mit jeder Ersetzung kürzer. Der Algorithmus beschleunigt sich also, je mehr Dateien abgearbeitet sind, und man muss nicht bis zum Ende des Baums laufen, sondern nur, bis die Suchliste leer ist (was früher der Fall sein kann).

Das Ganze funktioniert natürlich nur, wenn die Namen der 7000 Quelldateien im gesamten Zielbaum eindeutig sind, als keine doppelten. Ist das so?

In welcher Sprache macht man das? In irgendeiner, die man gut beherrscht und die leistungsfähige Bibliotheken (Container und Algorithmen) hat. Meine erste Wahl wäre C++, und zwar mindestens C++17 wegen std::filesystem. Ich glaube, wenn man den Container klug wählt und sich bei der Suche von Algorithmen helfen lässt (Container vergleichen und Übereinstimmungen heraussuchen), dann braucht man kaum noch was selber zu programmieren.

Dieser Post wurde am 10.05.2019 um 13:49 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: