Outil de renommage de fichiers en lot
Ajoutez des préfixes, suffixes, numéros de séquence, recherche et remplacement, changement de casse, modification d'extension — tout dans votre navigateur
Glissez les fichiers ici, ou cliquez sur le bouton ci-dessous
Tout type et toute quantité de fichiers, traités uniquement dans votre navigateur — jamais téléversés
Qu'est-ce que le renommage de fichiers en lot ?
Le renommage de fichiers en lot consiste à modifier en une seule passe les noms d'un groupe de fichiers selon un ensemble de règles. Cas courants : transformer des exports d'appareil photo comme IMG_1234.JPG en 2026-06-voyage-001.jpg, préfixer des ressources d'export d'interface avec @2x_, séquencer des reçus scannés selon la date de facturation. Le renommage intégré au Finder de macOS couvre Rechercher-Remplacer et un format « nom + compteur », mais ne peut pas réécrire les extensions ; le renommage par Tab de l'Explorateur Windows ne gère que des numéros de séquence simples (PowerToys PowerRename ajoute le regex mais nécessite une installation séparée). Les tâches plus complexes passent généralement par ReNamer, Bulk Rename Utility, ou des scripts PowerShell / shell faits maison. Cet outil expose chaque opération comme un contrôle visuel avec aperçu en direct et détection des doublons, afin que vous puissiez vérifier le résultat avant de télécharger. Tout s'exécute dans la mémoire du navigateur, donc les noms de fichiers contenant des codes de projet, des noms de clients ou des informations personnelles ne quittent jamais votre machine.
Comment utiliser
Étapes
- Glissez les fichiers dans la zone de dépôt, ou cliquez sur « Sélectionner des fichiers » pour les choisir — chaque ajout vient s'ajouter à la liste
- Réorganisez avec « Trier par nom / taille », ou utilisez les flèches haut/bas de chaque ligne pour ajuster finement
- Configurez les règles dans les trois cartes : préfixe/suffixe, recherche-remplacement, numérotation, casse, extension
- La colonne « Nouveau nom » se met à jour en direct — bleu signifie qu'il diffère de l'original, rouge qu'il entre en collision avec un autre fichier
- Cliquez sur « Télécharger ce fichier » pour enregistrer un fichier individuel, ou « Télécharger en ZIP » pour tout récupérer d'un coup
Ordre des règles
- D'abord remplacer le nom de base (laisser vide pour conserver l'original) — utile lorsque vous voulez que chaque fichier finisse par exemple en « photo » plus un numéro de séquence, indépendamment de son nom d'origine
- Ensuite, la recherche-remplacement s'applique uniquement au nom de base, jamais à l'extension
- La numérotation s'insère ensuite, en préfixe, suffixe, ou en remplacement complet du nom de base
- Le préfixe et le suffixe enveloppent le résultat
- La transformation de casse et le traitement de l'extension viennent en dernier ; l'extension est traitée indépendamment
Cas d'utilisation
Comment ça marche
L'outil entier s'appuie sur la File API du navigateur, Blob et URL.createObjectURL — chaque octet reste en mémoire. Quand vous déposez ou sélectionnez des fichiers, le navigateur transmet à JavaScript des objets File (sous-classes de Blob) sur le tas JS ; l'outil ne lit que la propriété `name` de chaque fichier pour le renommage, sans jamais toucher au contenu binaire. Les règles s'appliquent dans un ordre fixe pour éviter les interférences : d'abord le nom de base est déterminé (fourni par l'utilisateur ou base d'origine), avec l'extension séparée à lastIndexOf('.') (les fichiers cachés type .gitignore sont traités uniquement comme nom de base, sans extension) ; ensuite la recherche-remplacement s'effectue via String.prototype.split + Array.prototype.join (pas de regex — pour éviter une correspondance accidentelle de caractères spéciaux) ; puis le numéro de séquence est calculé via `String(start + i).padStart(pad, '0')` et placé en préfixe/suffixe/remplacement du nom de base ; le préfixe et le suffixe sont ensuite concaténés autour du résultat ; la transformation de casse s'applique alors à toute la chaîne préfixe+base+suffixe d'un seul coup ; l'extension est traitée indépendamment (conserver/majuscules/minuscules/remplacer). La détection des doublons compte chaque nouveau nom dans une Map<string, number> pendant l'aperçu ; les noms apparaissant plus d'une fois entrent dans un duplicateSet que l'interface met en surbrillance rouge. Cliquer sur « Télécharger en ZIP » alors que cet ensemble n'est pas vide affiche une notification d'erreur et interrompt l'empaquetage — la liste d'origine est préservée, il vous suffit d'ajuster les règles et de réessayer. Cela tourne dans useMemo([files, opts]), donc les modifications de règles recalculent de manière incrémentale sans refaire le rendu de la liste de fichiers. Le téléchargement individuel enveloppe le File dans URL.createObjectURL, déclenche un clic synthétique sur `<a download>` et révoque immédiatement l'URL. L'empaquetage ZIP importe dynamiquement JSZip au premier clic (~80 Ko, sans coût au premier rendu), lit l'arrayBuffer() de chaque fichier, l'écrit sous le nouveau nom et appelle generateAsync({type:'blob', compression:'DEFLATE', compressionOptions:{level:6}}). DEFLATE est la valeur par défaut de ZIP ; le niveau 6 équilibre ratio et vitesse. Le calcul des règles est en O(n) selon le nombre de fichiers ; le temps d'empaquetage évolue avec le total d'octets. Les navigateurs lisent généralement le contenu des File de manière paresseuse — arrayBuffer() est le moment où les octets quittent réellement le disque — donc même des milliers de fichiers en file d'attente ne coûtent presque rien pendant l'aperçu, le pic de mémoire n'arrive qu'au « Télécharger en ZIP ».
- lastIndexOf('.') sépare l'extension ; si le seul point est à l'index 0 (par exemple .gitignore), le fichier n'a pas d'extension et le point initial reste dans le nom de base
- La recherche-remplacement utilise String.prototype.split + Array.prototype.join au lieu de replaceAll, pour éviter une interprétation accidentelle de $1/$& dans la chaîne de remplacement
- padStart(pad, '0') génère le numéro complété par des zéros ; pad=0 produit le numéro brut pour les cas où l'alignement n'est pas nécessaire
- La transformation de casse s'effectue après que le préfixe et le suffixe aient été concaténés, ce qui normalise tout le segment de base d'un seul coup ; l'extension est traitée indépendamment
- La détection des doublons s'exécute dans useMemo avec une Map ; recalcul O(n), et l'interface ne fait qu'échanger un className pour les lignes mises en surbrillance — pas de reconstruction du DOM
- Les URL Blob sont révoquées immédiatement via URL.revokeObjectURL pour libérer le pool d'allocation d'URL, car les object URL réservées s'accumulent rapidement en cas d'usage intensif
- JSZip est chargé via dynamic import uniquement quand l'empaquetage est déclenché, donc les ~80 Ko de code n'affectent jamais le premier rendu ni le LCP
- Le niveau 6 de DEFLATE est le point d'équilibre côté navigateur ; le niveau 9 ajoute 1–2 % de compression pour 2–3× le temps et n'apporte presque rien sur les images/vidéos déjà compressées
Exemples
Préfixe + numérotation à 3 chiffres complétée par des zéros
Entrée: photo.jpg, sunset.jpg, beach.jpg
Règles: prefix=trip2026_, start=1, pad=3, position=after
Sortie:
trip2026_photo001.jpg
trip2026_sunset002.jpg
trip2026_beach003.jpgRemplacer entièrement le nom de base
Entrée: GH010001.MP4, GH010002.MP4, GH010003.MP4
Règles: base=SceneA_take, start=1, pad=2, position=after, ext=lowercase
Sortie:
SceneA_take01.mp4
SceneA_take02.mp4
SceneA_take03.mp4Supprimer un suffixe redondant via recherche-remplacement
Entrée: report_v1_FINAL.docx, summary_v1_FINAL.docx
Règles: find=_v1_FINAL, replace=(vide), case=lowercase
Sortie:
report.docx
summary.docxRemplacer l'extension
Entrée: index.htm, about.htm, contact.htm
Règles: extension=replace, new ext=html
Sortie:
index.html
about.html
contact.htmlPréfixe + espace en tiret + minuscules
Entrée: Banner Image.PNG, Hero Photo.JPG
Règles: prefix=web-, find=(espace), replace=-, case=lowercase, extension=lowercase
Sortie:
web-banner-image.png
web-hero-photo.jpgFAQ
Mes fichiers sont-ils téléversés vers un serveur ?
Non. De l'ajout des fichiers à la production des nouveaux noms jusqu'à l'empaquetage du ZIP, tout s'exécute localement dans votre navigateur. Aucune requête de téléversement n'est effectuée. Vous pouvez le vérifier dans le panneau Réseau des DevTools de votre navigateur.
Pourquoi mon .gitignore / .bashrc n'est-il pas considéré comme ayant une extension ?
L'outil sépare au dernier point, mais si le seul point se trouve tout au début (un fichier caché), le nom entier est traité comme nom de base — cela évite de prendre un marqueur de préfixe caché pour une extension.
Que se passe-t-il si mes nouveaux noms entrent en collision ?
La liste d'aperçu met les doublons en surbrillance rouge et affiche un badge de comptage. Cliquer sur « Télécharger en ZIP » en présence de doublons est bloqué par un message d'erreur — votre liste de fichiers n'est pas perdue, il suffit d'ajuster les règles et de réessayer. Solutions courantes : activer la numérotation, augmenter la largeur du remplissage, ajouter un préfixe/suffixe.
Peut-il renommer des dossiers / préserver l'arborescence ?
Pas encore. La version actuelle gère une liste plate de fichiers unique. Pour un renommage en lot conscient des dossiers, renommez les fichiers ici puis assemblez l'arborescence avec l'outil ZIP Pack.
La recherche-remplacement prend-elle en charge les regex ?
Non. Elle utilise volontairement une correspondance de chaîne littérale (split-join), afin que les utilisateurs ne puissent pas déclencher accidentellement des jetons de chaîne de remplacement comme $1 ou $& dans leur champ de remplacement. La correspondance simple couvre la grande majorité des besoins de nettoyage.
Combien de fichiers peut-il gérer ?
Il n'y a pas de limite stricte sur le nombre — l'aperçu est essentiellement gratuit. L'empaquetage est borné par la mémoire du navigateur : pour des totaux très importants (plusieurs Go), l'allocation d'un seul Blob peut échouer ; dans ce cas, divisez vos fichiers en lots et empaquetez chaque lot séparément.
Le ZIP téléchargé affiche des noms non-ASCII corrompus. Pourquoi ?
JSZip écrit les noms de fichiers en UTF-8 par défaut, ce que les extracteurs modernes (Archive Utility de macOS, Explorateur Windows 11, 7-Zip, WinRAR 5+) lisent correctement. Les anciens Explorateurs Windows sur Win 7/8 peuvent encore mal décoder les noms non latins — utilisez 7-Zip ou Bandizip à la place.
Puis-je annuler un renommage si j'ai fait une erreur ?
Les renommages n'ont lieu qu'au moment du téléchargement — tant que vous ne cliquez pas sur « Télécharger en ZIP » ou « Télécharger ce fichier », les fichiers d'origine sur le disque restent intacts. L'aperçu est entièrement réversible : effacez les règles, modifiez-les, ou retirez des fichiers individuels de la liste. Si vous avez déjà téléchargé, ajustez simplement les règles et téléchargez à nouveau avec les mêmes fichiers source.