Die Hinweise zum Entfernen illegaler Zeichen finden Sie hier:
Wie entfernt man unzulässige Zeichen aus Pfad- und Dateinamen?
Sie müssen nur den Zeichensatz auf die Zeichen ändern, die Sie entfernen möchten.
Wenn Sie herausgefunden haben, wie Sie die Ordner rekursieren können, können Sie alle Dateien in jedem Ordner mit abrufen:
var files = System.IO.Directory.EnumerateFiles(currentPath);
und dann
foreach (string file in files)
{
System.IO.File.Move(file, ConvertFileName(file));
}
Die ConvertFileName-Methode, die Sie schreiben werden, um einen Dateinamen als String zu akzeptieren und einen Dateinamen zurückzugeben, bei dem die schlechten Zeichen entfernt wurden.
Beachten Sie, dass Sie bei Verwendung von .NET 3.5, GetFiles()
funktioniert auch. Laut MSDN:
Die Methoden EnumerateFiles und GetFiles Methoden unterscheiden sich wie folgt: Wenn Sie EnumerateFiles verwenden, können Sie die Aufzählung der Namenssammlung bevor die gesamte Sammlung [ ] müssen Sie warten, bis das gesamte Array der Namen zurückgegeben wird, bevor Sie auf das das Array zugreifen können. Wenn Sie also Arbeit mit vielen Dateien und Verzeichnissen arbeitet, kann EnumerateFiles effizienter sein.
Wie man Verzeichnisse rekursiv auflistet
string path = @"c:\dev";
string searchPattern = "*.*";
string[] dirNameArray = Directory.GetDirectories(path, searchPattern, SearchOption.AllDirectories);
// Or, for better performance:
// (but breaks if you don't have access to a sub directory; see 2nd link below)
IEnumerable<string> dirNameEnumeration = Directory.EnumerateDirectories(path, searchPattern, SearchOption.AllDirectories);