![]() |
Dateien eines verzeichnisses umbenennen
Hallo,
ich habe ein Verzeichnis mit folgenden Dateien: Datei.001 Datei.002 Datei.003 Datei.004 Datei.005 ... usw. Nun möchte ich folgendes machen: Wenn irgendeine beliebige Datei dieses Verzeichnisses gelöscht wird (z.B. Datei.002), sollen alle anderen Dateien entsprechend umbenannt werden, sodass keine Zählerlücken entstehen. Datei.001--> bleibt Datei.003 --> umbenennen zu Datei.002 Datei.004 --> umbenennen zu Datei.003 Das Ergebnis sollte dann so aussehen: Datei.001 Datei.002 Datei.003 Datei.004 Kann mir jemand sagen, wie soetwas geht? Besten dank im Vorraus Bea |
Re: Dateien eines verzeichnisses umbenennen
einfach rename
oder mit:
Delphi-Quellcode:
nur weiß ich nicht wie du das genau machen willst
//uses sysutil //glaub ich
MoveFile(PChar(OldName), PChar(NewName)); wenn du zb mitteln win explorer ne datei umbenennst, dann müsste dein programm ja alle dateien unbenennen -->bedeutet also, das es die ganze zeit im hintergrund laufen muss und das verzeichnis überwacht aber versuchs mal mir rename (delphi hilfe bringt dich da auch noch weiter) |
Re: Dateien eines verzeichnisses umbenennen
Hallo Bea,
du wirst hoffentlich gute Gründe dafür haben die Namen lückenlos durchnummeriert zu halten. Allerdings würde ich nicht alle Namen umbennen, sondern beim Löschen von Datei 2 aus insgesamt 100 würde ich Datei.002 löschen und dann Datei.100 in Datei.002 umbenennen. Grüße vom marabu |
Re: Dateien eines verzeichnisses umbenennen
als erstes nimmst du eine Komponente "DirMonitor" oder "FileMonitor". Diese sind bei JCL oder RX-Tools oder auch seperat erhältlich. Natürlich kannst du auch die Funktionen der WinAPI nehmen.
Dort registrierst Du dein Verzeichnis, damit Du bei Änderungen benachrichtigt wirst. Nun prüfst du, welche Datei verschwunden ist und machst das Umbenennen der anderen dateien. so einfach ist das. :-) |
Re: Dateien eines verzeichnisses umbenennen
Hallo,
zur Hintergrundinformation: Die Dateien Datei.001 Datei.002 Datei.003 ... sind im Grunde ein Dokument mit mehreren Seiten. Datei.005 ist also die 5.Seite in dem Dokument. Mein Programm geht nun jede Seite durch und schaut nach, ob es sich um eine Leerseite handelt und löscht diese dann. Das hab ich auch alles schon fertig, da brauch ich keine Hilfe, das dient nur als Hintergrundinformation. Um nun den Zusammenhang des Dokumentes wiederherzustellen, müssen die Seiten nach der gelöschten Seite umbenannt (Endung decrementieren) werden z.B.eben so: Datei.001--> bleibt Datei.003 --> umbenennen zu Datei.002 Datei.004 --> umbenennen zu Datei.003 Die reihenfolge der Seiten muss beibehalten werden. Deshalb kann ich auch nicht, wie von marabu vorgeschlagen die Seite Datei.100 zu Datei.002 umbenennen. Das muss schon die 100. bzw, nach dem Löschen einer Seite die 99. Seite bleiben. Ich hoffe ich konnte das einigermaßen verständlich erklären. Danke Bea |
Re: Dateien eines verzeichnisses umbenennen
Dann benenn sie doch einfach mit
![]() |
Re: Dateien eines verzeichnisses umbenennen
Hallo Bea!
Zitat:
Die Nummern sind doch aufsteigend belegt und ich nehme an, daß Du einen Zähler von 1 bis Maximum für die Prüfung hochzählst. Einfach eine weitere Variable mit dem neuen Seitenzähler mitlaufen lassen und wenn alte und neue Nummer ungleich sind, umbenennen. Du ziehst doch Seiten nach vorne in die Lücke, also wird Nummer "n" gelöscht und dann "n+1" in "!n" umbenannt - das geht immer. Das Einfügen einer neuen Datei wäre schon etwas aufwändiger. Gruß Dietmar Brüggendiek |
Re: Dateien eines verzeichnisses umbenennen
Hallo Bea,
so geht's:
Delphi-Quellcode:
Optimieren kannst Du es sicherlich selbst.
const
endwert = 100; var j, i, akt, lst : integer; aerw, lerw : string[3]; // Aktuelle ERWeiterung, LetzteERWeiterung pfn, afn, lfn : string; procedure TForm1.SpeedButton1Click(Sender: TObject); begin pfn := 'c:\tmp\datei.'; akt := 1; lst := 0; repeat aerw := IntToStr(akt); while length(aerw) < 3 do aerw := '0' + aerw; afn := pfn + aerw; if FileExists(afn) then begin inc(lst); if lst <> akt then begin lerw := IntToStr(lst); while length(lerw) < 3 do lerw := '0' + lerw; lfn := pfn + lerw; renameFile(afn, lfn); end; end; inc(akt); until akt > endwert; end; mfg eddy |
Re: Dateien eines verzeichnisses umbenennen
Oh, danke eddy, das funktioniert ja prima.
Nun muss ich mir das jetzt erstmal verinnerlichen, will ja auch was dabei lernen ;-). Da brauch ich ja das Decrementieren der Werte 002, 003, 004 usw. gar nicht. Also vielen Dank erstmal Bea |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz