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