Verzeichnisse/Dateien rekursiv umbenennen

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Verzeichnisse/Dateien rekursiv umbenennen

Beitrag von Manfred »

Hi,
ich bastel gerade an einem Problem, was sich als doch recht aufmerksamkeitsfordernd herausstellt. Um es kurz zu fassen, ich muß rekursiv Dateien und verzeichnisse umbenennen, von deren Anzahl es unterschiedlich viele gibt. Jedes Verzeichnis hat eine Nummer im Namen, die an feststehender Stelle eine Ziffer ausgetauscht bekommen muß. Der komplette Strang kann so aussehen:
\verzeichnis1\verzeichnis2\name_0001\name_0001_1999
innerhalb der Verzeichnisstufen können jeweils nochmal Dateien stehen, die ähnlich aufgebaut sind.
Wenn es fertig ist, dann sollte die 2te 0 im Block gegen eine andere Zahl ausgetauscht sein.
Das wird sicherlich alles rekursiv laufen müssen, aber hat jemand eine Idee, wie man sowas relativ harmlos anpacken kann? Verzeichnisnamen kann man mit renamfile() aus den Tools 3 umbenennen, aber leider nicht mehrere Stufen auf einmal. Jedes Verzeichnis getrennt
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Verzeichnisse/Dateien rekursiv umbenennen

Beitrag von AUGE_OHR »

Manfred hat geschrieben:Um es kurz zu fassen, ich muß rekursiv Dateien und verzeichnisse umbenennen ...
so eine Aufgabe hatte ich auch mal und das war zuerst das totale Chaos.

ich habe es dann "sicherer" gelöst :
lese Datei mit Path, manipuliere Path und schreibe das ganze in den neuen Path.
damit bleibt erst mal die Original Struktur erhalten und ich kann testen bis es klappt.
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Verzeichnisse/Dateien rekursiv umbenennen

Beitrag von Manfred »

ich habe jetzt eine Tour, die vorher einliest, dann umbenennt, die Änderung speichert und dann weitermacht. Mal sehen, wohin das führt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
DelUser01

Re: Verzeichnisse/Dateien rekursiv umbenennen

Beitrag von DelUser01 »

Hallo Manfred,

hatte schon manchmal die Anforderung Verzeichnisse und Dateien in Verzeichnissen rekursiv zu bearbeiten. Inzwischen habe ich verschiedene Wege um so etwas anzugehen.

in dem von Dir geschilderten Fall würde ich auf die Schnelle zweistufig vorgehen:

zuerst die Verzeichnisse ändern dann die Dateien.
1)
die gesamte Verzeichnis-Struktur einlesen - nur die Verzeichnisse in eine Datenbank oder ein Array.
die DB oder das Array so sortieren, dass die untersten Verzeichnisse vorne/oben stehen.
Dann die DB/das Array durcharbeiten und immer nur das entsprechend unterste Verzeichnis ändern.
Das ganze bis zum Ende der DB/des Arrays durcharbeiten.
2)
erneut die gesamte Verzeichnis-Struktur einlesen. dieses Mal mit den Dateinamen speichern.
nun müssen die Daten nicht mehr sortiert werden, da die Verzeichnissnamen nicht angefasst werden.
Jetzt die DB von Anfang bis Ende durcharbeiten und die betreffenden Dateien auf der HDD ändern.

Während des Umbenennungs-Durchlaufs sollte möglichst kein weiteres Programm in der Struktur arbeiten, das könnte zu Schreib-/Lesefehlern oder sonstigen Crashs kommen.
Antworten