Am 10.02.2010 um 17:10 schrieb Christian Dorn:

> Ansonsten sehe ich auf den ersten Blick keine Probleme.

Das kommt davon, wenn man Tomaten auf den Augen hat ;-) Zuerst einmal hast Du 
dir eine wunderschöne Endlosschleife programmiert: bei jedem ersten Durchlauf 
der for-Schleife kommst Du zu der Zeile "goto start", wodurch die for-Schleife 
wieder bei 1 anfängt; d.h. Du kommst nie dazu, die zweite Datei im Ordner zu 
bearbeiten!

Außerdem ist Dein Code sehr ineffizient. Stell Dir vor, Du wählst einen Ordner 
mit 10.000 Dateien, und nur die letzten 100 Dateinamen enthalten einen "/". Mit 
deinem Code würdest Du die ersten 9.900 Dateien 100 Mal nutzlos durchlaufen 
(und bei jeder dieser Dateien versuchen, einen nicht vorhandenen "/" zu 
ersetzen)! Besser wäre es, Du bautest dir erst eine statische Liste aller 
Dateien im ausgewählten Ordner auf. Und da diese Funktion öfter von Nutzen sein 
kann, solltest Du sie gleich als globale Methode in ein Modul packen:

Function FileList( Extends folder as FolderItem ) as FolderItem()
   #pragma DisableBackgroundTasks // kann bei großen Dateimengen die Ausführung 
beschleunigen
   dim files() as FolderItem
   for i as Integer = 1 to folder.count
      files.append folder.TrueItem(i)
   next i
   return files
End Function

Und auch Deine Funktion zum Umbenennen der Dateien könntest Du zur 
Wiederverwendung in dieses Modul packen:

Sub RenameFiles( Extends folder as FolderItem, searchStr as String, replaceStr 
as String )
   #pragma DisableBackgroundTasks // s.o.
   dim fileList() as FolderItem = folder.FileList()
   for each file as FolderItem in fileList
      file.name = ReplaceAll( file.name, searchStr, replaceStr )
   next file
End Sub

Zum Umbenennen der Dateien führst Du dann an geeigneter Stelle diesen Code aus:

[...]
dim folder as FolderItem = SelectFolder()
if not (folder Is nil) then
   folder.RenameFiles("/", "_")
end if
[...]


Gruß
Christian


  • [no subject] Robert Lehner
    • Re: Christian Dorn
      • Re: Christian Dorn
    • Re: Michael Köhler
      • Re: Christian Dorn
        • Re: Michael Köhler

Antwort per Email an