Umbenennung von Dateien
-
Ich möchte alle Bilddateien in einem Ordner mit einem neuen Namen und fortlaufender Nummerierung versehen, also: 'name_xxx.jpg'
Es funktioniert auch, aber es wird vor dem Dateinamen immer ein Leerzeichen erzeugt. Woher kommt das und wie kann ich es entfernen?
Wenn ich einfach das erste Zeichen entferne, bringt Move() einen Fehler, weil die Datei-Namen identisch sind.// Die Datei-Pfade sind im String-Array 'feld' hinterlegt for (int i=0; i<feld.Length; i++) { var fileInfo = new FileInfo(feld[i]); // damit die Nummer immer dreistellig dargestellt wird if(i<10) { nullen = "00"; } else if(i<100) { nullen = "0"; } else { nullen = ""; } // erzeugen des neuen Namens string dateiname = "Bild_" + nullen + (i+1) + ".jpg"; File.Move(feld[i], fileInfo.Directory.ToString() + "\\" + dateiname); }
-
Kein Plan was du da treibst, aber es geht viel einfacher:
string dir = @"D:\Test"; var filePaths = Directory.GetFiles(dir); int fileIndex = 0; foreach (string filePath in filePaths) { string newFileName = String.Format("Bild_{0:000}.jpg", fileIndex++); File.Move(filePath, Path.Combine(dir, newFileName)); }
-
In dem Ordner können unter Umständen auf andere Dateitypen sein. Um eine AUswahl aller jpg's zu erreichen, habe ich mir mit
Directory.GetFiles(pfad, "*.jpg");
ein String-Array erzeugt
Muss ich bei der anderen Funktion var also erst in string konvertieren und die letzten vor Zeichen testen, ob es sich um ".jpg" handelt?
-
Nein, einfach auch den Filter beim Aufruf von GetFiles anwenden. Die Variable "filePaths" ist im Übrigen auch ein String-Array. Nur steht das nicht explizit da, sondern wird vom Compiler automatisch aus dem Rückgabetyp von GetFiles abgeleitet.
-
Vielen Dank für deine Hilfe!
Ich habe seither nie mit 'var' programmiert sondern immer nur mit festen Typen oder eigenen Klassen