Massen-Dateiumbenennung
Präfixe, Suffixe, fortlaufende Nummern, Suchen & Ersetzen, Groß-/Kleinschreibung, Erweiterungen anpassen — alles im Browser
Dateien hierher ziehen oder unten auf den Button klicken
Beliebiger Dateityp und beliebige Anzahl, Verarbeitung nur im Browser — nichts wird hochgeladen
Was ist Massen-Dateiumbenennung?
Massen-Dateiumbenennung bedeutet, eine Gruppe von Dateinamen in einem Durchgang nach festen Regeln zu ändern. Typische Szenarien: Kameraexporte wie IMG_1234.JPG zu 2026-06-trip-001.jpg machen, UI-Export-Assets mit @2x_ präfixen, gescannte Belege nach Rechnungsdatum durchnummerieren. Das in macOS Finder eingebaute Umbenennen deckt Suchen & Ersetzen sowie ein Format aus Name + Zähler ab, kann aber keine Erweiterungen umschreiben; das Tab-Umbenennen im Windows-Explorer unterstützt nur einfache Sequenznummern (PowerToys PowerRename ergänzt Regex, muss aber separat installiert werden). Aufwendigere Aufgaben erfordern üblicherweise ReNamer, Bulk Rename Utility oder selbstgeschriebene PowerShell- bzw. Shell-Skripte. Dieses Werkzeug zerlegt jeden Vorgang in eine visuelle Steuerung mit Live-Vorschau und Duplikatserkennung, sodass Sie das Ergebnis vor dem Download verifizieren können. Alles läuft im Speicher des Browsers, sodass Dateinamen mit Projektkürzeln, Kundennamen oder persönlichen Informationen das Gerät nie verlassen.
Verwendung
Schritte
- Dateien in den Upload-Bereich ziehen oder auf "Dateien auswählen" klicken — wiederholtes Hinzufügen erweitert die Liste
- Mit "Nach Name / Größe sortieren" umordnen oder die Pfeile in jeder Zeile zur Feinjustierung nutzen
- Regeln auf den drei Karten konfigurieren: Präfix/Suffix, Suchen & Ersetzen, Nummerierung, Schreibweise, Erweiterung
- Die Spalte "Neuer Name" aktualisiert sich live — Blau bedeutet Abweichung vom Original, Rot bedeutet Kollision mit einer anderen Datei
- Auf "Diese Datei herunterladen" klicken, um einzelne Dateien zu speichern, oder auf "Als ZIP herunterladen", um alles auf einmal zu erhalten
Reihenfolge der Regeln
- Zuerst wird der Basisname ersetzt (leer lassen, um Original zu behalten) — nützlich, wenn jede Datei am Ende z. B. "photo" plus Sequenznummer heißen soll, unabhängig vom ursprünglichen Namen
- Dann läuft Suchen & Ersetzen nur auf dem Basisnamen, niemals auf der Erweiterung
- Anschließend wird die Nummerierung als Präfix, Suffix oder vollständiger Ersatz des Basisnamens eingefügt
- Präfix und Suffix umschließen das Ergebnis
- Schreibweisen-Transformation und Erweiterungs-Behandlung kommen zuletzt; die Erweiterung wird unabhängig verarbeitet
Anwendungsfälle
Funktionsweise
Das gesamte Werkzeug basiert auf der File API, Blob und URL.createObjectURL des Browsers — jedes Byte bleibt im Speicher. Beim Drop oder Auswählen übergibt der Browser JavaScript File-Objekte (Blob-Subklassen) auf dem JS-Heap; das Werkzeug liest pro Datei nur die `name`-Eigenschaft zum Umbenennen, der Binärinhalt wird nie angefasst. Die Regeln werden in fester Reihenfolge angewendet, um Wechselwirkungen zu vermeiden: Zuerst wird der Basisname bestimmt (vom Nutzer angegeben oder Originalbasis), wobei die Erweiterung mit lastIndexOf('.') abgespalten wird (Dotfiles wie .gitignore werden ausschließlich als Basis behandelt, ohne Erweiterung); anschließend läuft Suchen & Ersetzen als String.prototype.split + Array.prototype.join (kein Regex — vermeidet ungewollte Sonderzeichen-Treffer); danach wird die Sequenznummer per `String(start + i).padStart(pad, '0')` berechnet und als Präfix/Suffix/Ersatz des Basisnamens platziert; Präfix und Suffix werden anschließend um das Ergebnis herum verkettet; die Schreibweisen-Transformation wirkt dann auf den gesamten String aus Präfix+Basis+Suffix auf einmal; die Erweiterung wird unabhängig verarbeitet (Beibehalten/Groß/Klein/Ersetzen). Die Duplikatserkennung zählt jeden neuen Namen während der Vorschau in einer Map<string, number>; Namen, die mehr als einmal vorkommen, landen in einem duplicateSet, das die UI rot hervorhebt. Klickt man bei nicht-leerem Set auf "Als ZIP herunterladen", erscheint eine Fehler-Toast und der Pack-Vorgang wird abgebrochen — die ursprüngliche Liste bleibt erhalten, sodass du die Regeln anpassen und es erneut versuchen kannst. Das läuft innerhalb von useMemo([files, opts]), sodass Regeländerungen inkrementell neu berechnet werden, ohne die Dateiliste neu zu rendern. Einzeldatei-Downloads verpacken die File in URL.createObjectURL, lösen einen synthetischen `<a download>`-Klick aus und widerrufen die URL umgehend. Das ZIP-Packen importiert JSZip beim ersten Klick dynamisch (~80 KB, kein Aufschlag auf den Erstaufbau), liest arrayBuffer() jeder Datei, schreibt sie unter dem neuen Namen und ruft generateAsync({type:'blob', compression:'DEFLATE', compressionOptions:{level:6}}) auf. DEFLATE ist der ZIP-Standard; Stufe 6 wiegt Kompressionsrate gegen Geschwindigkeit ab. Die Regelberechnung ist O(n) bezogen auf die Dateianzahl; die Pack-Zeit skaliert mit der Gesamtbytemenge. Browser lesen File-Inhalte typischerweise verzögert — arrayBuffer() ist der Moment, in dem Bytes tatsächlich von der Festplatte kommen — sodass selbst Tausende eingereihte Dateien während der Vorschau quasi nichts kosten und der Speicher-Peak erst beim "Als ZIP herunterladen" auftritt.
- lastIndexOf('.') trennt die Erweiterung ab; liegt der einzige Punkt am Index 0 (z. B. .gitignore), hat die Datei keine Erweiterung und der führende Punkt bleibt Teil des Basisnamens
- Suchen & Ersetzen nutzt String.prototype.split + Array.prototype.join statt replaceAll, um eine versehentliche Interpretation von $1/$& im Ersetzungstext auszuschließen
- padStart(pad, '0') erzeugt die nullaufgefüllte Nummer; pad=0 gibt die rohe Zahl aus, wenn keine Ausrichtung benötigt wird
- Die Schreibweisen-Transformation läuft erst nach dem Verketten von Präfix/Suffix, sodass sie den gesamten Basis-Abschnitt auf einmal normalisiert; die Erweiterung wird unabhängig behandelt
- Die Duplikatserkennung läuft in einem useMemo mit einer Map; O(n)-Neuberechnung, und die UI tauscht für markierte Zeilen nur einen className aus — kein DOM-Neuaufbau
- Blob-URLs werden über URL.revokeObjectURL umgehend widerrufen, um den URL-Allokationspool freizugeben, da reservierte Object-URLs bei intensiver Nutzung schnell anwachsen
- JSZip wird per dynamischem Import erst beim Auslösen des Packens geladen, sodass die ~80 KB Code Erstaufbau und LCP nicht beeinflussen
- DEFLATE-Stufe 6 ist der Sweet Spot im Browser; Stufe 9 fügt 1–2 % Kompression bei 2–3-facher Zeit hinzu und bringt bei bereits komprimierten Bildern/Videos kaum etwas
Beispiele
Präfix + 3-stellige nullaufgefüllte Nummerierung
Eingabe: photo.jpg, sunset.jpg, beach.jpg
Regeln: prefix=trip2026_, start=1, pad=3, position=after
Ausgabe:
trip2026_photo001.jpg
trip2026_sunset002.jpg
trip2026_beach003.jpgBasisnamen vollständig ersetzen
Eingabe: GH010001.MP4, GH010002.MP4, GH010003.MP4
Regeln: base=SceneA_take, start=1, pad=2, position=after, ext=lowercase
Ausgabe:
SceneA_take01.mp4
SceneA_take02.mp4
SceneA_take03.mp4Überflüssiges Suffix per Suchen & Ersetzen entfernen
Eingabe: report_v1_FINAL.docx, summary_v1_FINAL.docx
Regeln: find=_v1_FINAL, replace=(leer), case=lowercase
Ausgabe:
report.docx
summary.docxErweiterung ersetzen
Eingabe: index.htm, about.htm, contact.htm
Regeln: extension=replace, new ext=html
Ausgabe:
index.html
about.html
contact.htmlPräfix + Leerzeichen-zu-Bindestrich + Kleinbuchstaben
Eingabe: Banner Image.PNG, Hero Photo.JPG
Regeln: prefix=web-, find=(Leerzeichen), replace=-, case=lowercase, extension=lowercase
Ausgabe:
web-banner-image.png
web-hero-photo.jpgFAQ
Werden meine Dateien auf einen Server hochgeladen?
Nein. Vom Hinzufügen über das Erzeugen neuer Namen bis zum ZIP-Packen läuft alles lokal im Browser. Es werden keine Upload-Anfragen gestellt. Du kannst das im Network-Tab der Browser-DevTools prüfen.
Warum wird meine .gitignore / .bashrc nicht als Datei mit Erweiterung behandelt?
Das Werkzeug splittet am letzten Punkt, aber wenn der einzige Punkt ganz am Anfang steht (Dotfile), wird der gesamte Name als Basis behandelt — so wird die Markierung als versteckte Datei nicht mit einer Erweiterung verwechselt.
Was passiert, wenn meine neuen Namen kollidieren?
Die Vorschauliste hebt Duplikate rot hervor und zeigt eine Zählmarke. Ein Klick auf "Als ZIP herunterladen" wird bei vorhandenen Duplikaten mit einer Fehlermeldung blockiert — deine Dateiliste geht nicht verloren, du musst nur die Regeln anpassen und es erneut versuchen. Übliche Lösungen: Nummerierung aktivieren, mehr Stellen auffüllen, Präfix/Suffix ergänzen.
Können auch Ordner umbenannt oder Verschachtelungen erhalten werden?
Noch nicht. Die aktuelle Version verarbeitet eine flache Dateiliste. Für verzeichnisbewusste Massenumbenennung erst hier umbenennen und dann den Verzeichnisbaum mit dem ZIP-Pack-Werkzeug zusammenbauen.
Unterstützt Suchen & Ersetzen Regex?
Nein. Es nutzt absichtlich Literal-String-Matching (split-join), damit Nutzer keine Ersetzungsstring-Tokens wie $1 oder $& im Ersetzungstext versehentlich auslösen. Einfaches Matching deckt die allermeisten Aufräum-Aufgaben ab.
Wie viele Dateien sind möglich?
Es gibt keine harte Obergrenze für die Anzahl — die Vorschau ist praktisch kostenlos. Das Packen ist durch den Browser-Speicher begrenzt: Bei sehr großen Gesamtmengen (mehrere GB) kann die Allokation eines einzelnen Blobs scheitern; in dem Fall die Dateien in Stapel aufteilen und jeden separat packen.
Im heruntergeladenen ZIP erscheinen Nicht-ASCII-Namen verstümmelt. Warum?
JSZip schreibt Dateinamen standardmäßig als UTF-8, was moderne Entpacker (macOS Archivierungsprogramm, Windows-11-Explorer, 7-Zip, WinRAR 5+) korrekt lesen. Der alte Windows-Explorer unter Win 7/8 kann Nicht-Latein-Namen weiterhin falsch dekodieren — dann 7-Zip oder Bandizip verwenden.
Kann ich eine Umbenennung rückgängig machen, wenn ich einen Fehler gemacht habe?
Umbenennungen geschehen erst beim Download — solange du nicht auf "Als ZIP herunterladen" oder "Diese Datei herunterladen" klickst, bleiben die Originaldateien auf der Festplatte unverändert. Die Vorschau ist vollständig reversibel: Regeln zurücksetzen, anpassen oder einzelne Dateien aus der Liste entfernen. Wenn du bereits heruntergeladen hast, einfach die Regeln anpassen und mit denselben Quelldateien erneut herunterladen.