web-dev-qa-db-fra.com

Comment puis-je renommer en masse des fichiers?

J'ai un tas de fichiers nommés avec le modèle 99 - DescriptiveName.txt et j'aimerais supprimer le numéro de l'avant pour que je n'ai que DescriptiveName.txt.

Comment puis-je faire ceci? Puis-je le faire depuis la ligne de commande ou existe-t-il un utilitaire capable de le faire?

124
BIBD

Je sais que dans votre titre, vous dites "in dos" mais j'ai l'impression que vous cherchez simplement un moyen de le faire et que vous vous demandez si c'est le meilleur moyen.

Le meilleur outil que j'ai trouvé pour cela est Utilitaire de changement de nom en bloc .

Bulk Rename Utility

Ce n'est pas un outil de ligne de commande, mais ils ont une version en ligne de commande si vous voulez vraiment l'utiliser de cette façon.

J'ai beaucoup utilisé la version graphique, et elle est très puissante, très rapide et extrêmement facile à utiliser.

Oh, et c’estGRATUITpour usage personnel.

93
Jim McKeeth

Un petit script PowerShell:

$args | Rename-Item -NewName { $_.Name.ToLower() -replace '\d+ - ' }

Combiné avec des expressions régulières plus complexes, ceci pourrait devenir quelque chose comme:

ls | Rename-Item -NewName {$_ -replace '(\d+) - (.*).mp3', '$2 - $1.mp3' }

Ce qui transforme des choses comme '01 - Beginning.mp3 'en' Beginning - 01.mp3 '.

Utilisez le paramètre -WhatIf sur Rename-Item pour vérifier les renomations avant de les émettre.

56
Joey

AntRenamer facilite la définition d'un modèle de changement de nom; il y a beaucoup de ceux déjà préparés (et cela donne un aperçu des actions):

AntRenamer

Gratuit pour un usage personnel et commercial.

24
Gnoupi

Si vous voulez vraiment utiliser la ligne de commande de Windows (si vous ne voulez pas télécharger quelque chose), vous pouvez le faire comme ceci:

dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l

La première ligne affiche la liste des fichiers dans un fichier appelé fileList.txt. La deuxième ligne sépare chacun des noms de la liste en 3 parties, le #, le "-" et le reste du nom. Pour chacun de ceux-ci il fait la commande renommer.

24
zdan

vieille école:

Vous pouvez créer un répertoire DIR et rediriger la sortie vers un fichier, comme dans DIR * .TXT> TEMP.BAT

Ensuite, utilisez un éditeur pour extraire ce dont vous n’avez pas besoin et modifier les parties dont vous avez besoin. Ajoutez un "@echo off" comme première ligne, enregistrez-le et exécutez-le.

19
WireGuy

Une autre option:Massive File Renamer

Il permet de facilement renommer plusieurs fichiers et extensions de fichiers . C'est très simple et rapide!

Pour les utilisateurs avancés et les développeurs, il est possible d'utiliser expressions régulières .

Voyez-le en action:

enter image description here

16
IvanRF

J'utilise plusieurs/renommer l'outil (ctrl + M) Total Commander pour des choses comme ça. Leur outil utile, trop nombreux pour être compté, est facile à utiliser et peut également utiliser des expressions régulières et des modèles si nécessaire. Oh, et cela vous donne évidemment un aperçu avant d’apporter des modifications.

C'est la troisième ou quatrième question à laquelle j'ai répondu en recommandant Total Commander ... Je devrais recevoir une commission de leur part ;-)

13
Yuval

L'outil dont je suis satisfait est ReNamer . Il prend également en charge la sauvegarde des règles de renommage, ce qui m’a été utile, car je fais souvent les mêmes renommages.

Vous trouverez ci-dessous un exemple de suppression de texte avant le premier tiret, mais vous pouvez définir de nombreuses autres règles.

enter image description here

11
Esko Luontola

J'ai utilisé Free Commander Portable (freeware) à cet effet:

  1. Sélectionnez ou naviguez vers les fichiers ou les répertoires à renommer
  2. Appuyez sur [Ctrl-M] (ou Fichier> Renommer plusieurs fois).
  3. remplissez les champs comme bon vous semble
  4. vérifier l'aperçu montre ce que vous attendez
  5. Aller!
5
matt wilkie

Pour les utilisateurs avancés et les développeurs, je suggérerais RegexRenamer .

RegexRenamer screenshot

Avantages:

  • Interface utilisateur très simple;
  • Expressions régulières que les développeurs connaissent bien;
  • GPLv2;

Les inconvénients:

  • Ce n'est pas une ligne de commande! :)
4
bytebuster

J'ai découvert RenPhoric il y a environ un mois. Superbe. Et c'est free .

Pas d'interface compliquée et j'ai pu rapidement renommer exactement ce que je voulais. Expression régulière capable. Je n'ai rien utilisé d'autre depuis.

3
Umber Ferrule

Le moyen le plus simple serait d'utiliser Renommer Maître .

3
Kevin Panko

Voici unligne de commande _ solution --- un programme Java que j'ai écrit spécialement pour faciliter le travail avec des "modèles" dans les noms de fichiers. C'est gratuit et open source, alors n'hésitez pas à le modifier:

RenameWand
http://renamewand.sourceforge.net/

Quelques exemples d'utilisation pertinents:

Déposez tout ce qui précède le "-" dans le nom du fichier:

Java -jar RenameWand.jar  "<a> - <b>"  "<b>"

Ajoutez un numéro à 3 chiffres au nom du fichier, en triant par heure de la dernière modification:

Java -jar RenameWand.jar  "<a>"  "<3|#FT> <a>"

Réorganisez des parties du nom de fichier et changez la casse:

Java -jar RenameWand.jar  "<album> - <artist> - <song>.<ext>" 
                          "<artist.upper> <album.title> - <song>.<ext.lower>"
3
Zach Scrivena

Comme @zdan ci-dessus, je l'ai fait par ligne de commande (en utilisant "cmd.exe" dans Windows). Cela a pris un peu de bricolage pour mon cas particulier, mais un peu de recherche a résolu le problème.

Comme zdan, je produis la liste dans un fichier TXT, puis utilisais tokens et delims pour renommer les fichiers en conséquence. Dans mon cas, j'ai commencé avec une liste de fichiers nommés comme suit:

name-01-02-2012.csv

Je voulais que la partie date du fichier soit dans l'ordre j/m/j, avec la partie "nom" à la fin pour que cela se lise comme suit:

2012-01-02-name.csv

Pour faire cela en masse, j'ai utilisé le code suivant. Notez que lorsque vous procédez ainsi, TOUTES les parties du nom de fichier sont prises en compte, y compris l’extension ".csv". Cela m'a gaffé la première fois.

dir /B > fileList.txt
for /f "tokens=1,2,3,4,5 delims=-." %i in (fileList.txt) DO ren "%i-%j-%k-%l.%m" %l-%j-%k-%i.%m

Les tokens sont les "parties" du nom de fichier, les delims sont les séparateurs. Notez que dans mon cas, j'avais 2 délimiteurs (un tiret et un point).

Personnellement, je ne me soucie pas de l'application "Bulk Rename". Comme d'autres l'ont mentionné, l'interface graphique est atroce et pas très intuitive. Avec un peu de recherche et un codage simple, ces choses peuvent être accomplies beaucoup plus efficacement et rapidement.

2
gtr1971

Nom drôle et outil de ligne de commande très puissant, très rapide et extrêmement facile à utiliser. "Trouver et remplacer le texte" FART http://fart-it.sourceforge.net/ WORKS GREAT! peut renommer des mots dans des fichiers txt aussi.

USAGE

Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]

Options:
 -h --help          Show this help message (ignores other options)
 -q --quiet         Suppress output to stdio / stderr
 -V --verbose       Show more information
 -r --recursive     Process sub-folders recursively
 -c --count         Only show filenames, match counts and totals
 -i --ignore-case   Case insensitive text comparison
 -v --invert        Print lines NOT containing the find string
 -n --line-number   Print line number before each line (1-based)
 -w --Word          Match whole Word (uses C syntax, like grep)
 -f --filename      Find (and replace) filename instead of contents
 -B --binary        Also search (and replace) in binary files (CAUTION)
 -C --c-style       Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
    --cvs           Skip cvs dirs; execute "cvs edit" before changing files
 -a --adapt         Adapt the case of replace_string to found string
 -b --backup        Make a backup of each changed file
 -p --preview       Do not change the files but print the changes
2
user212780

Le script de renommage multiple est une alternative open source à l'outil Total Renommer de Total Commanders que vous pouvez piloter via un script. Il peut utiliser les plugins TC pour les informations de métadonnées.

https://code.google.com/p/multi-rename-script/ http://multi-rename-script.googlecode.com/svn/trunk/docs/res/MRS.PNG

2
majkinetor
 @ echo off 
 setlocal enabledelayededpansion 
 set X = 5 
 set FOLDER_PATH =. 
 pushd% FOLDER_PATH% 
 pour %% f in (*) faire si %% f neq% ~ nx0 (
 définir "nomfichier = %% ~ nf" 
 définir "nomfichier =! nomfichier: ~% X%!" 
 ren "%% f" "! nom de fichier! %% ~ xf" 
) 
 popd 
 

enregistrer cela dans un fichier de commandes et exécuter

2
bbm123

J'aime Cylog’s WildRename . Il est puissant, mais facile à utiliser et présente de nombreuses fonctionnalités:

  1. vite
  2. manipulation de cordes
  3. des comptoirs
  4. joker
  5. expressions régulières
  6. substitution
  7. conversion de casse
  8. enregistrement
  9. simulation (affiche les résultats sans les appliquer)

enter image description here

2
Synetech

J'utilise Blackboard pour administrer des cours dans une université. Lorsque je télécharge une assignation en masse (dans Blackboard, cliquez en haut de la colonne de notation, puis "télécharger le fichier de l'affectation". Blackboard ajoute un tas de choses supplémentaires au nom du fichier - ce qui rend le nom du fichier trop long pour être valide sous Windows.

Voici à quoi ils ressemblent:

Recitation20Assignment_studentname_attempt_2013-03-01-20-03-09_Exercise28129.docx

Et c'est ce que je voulais

studentname.docx

J'ai donc utilisé l'approche recommandée par @zdan et @ gtr1971, en ouvrant une fenêtre de commande sur le dossier contenant les fichiers (CMD.EXE). Ensuite, exécutez cette commande pour mettre tous les noms de fichiers dans un document.

dir /b >filelist.txt

Editez le document et supprimez les noms de dossiers, etc.

Utilisez cette commande pour remplacer les éléments de nom de fichier ajoutés au tableau noir par uniquement le nom d'utilisateur et l'extension de fichier.

for /f "tokens=1,2,3,4,5,6 delims=_." %i in (filelist.txt) do ren "%i _%j_%k_%l_%m.%n" %j.%n

J'espère que cela aide aussi quelqu'un d'autre.

1
Webmentorman

J'ai développé un utilitaire de ligne de commande JScript/batch hybride appelé JREN.BAT qui permet de renommer des fichiers ou des dossiers en effectuant une recherche par expression régulière et en remplaçant les noms. C'est un script pur qui s'exécutera de manière native sur n'importe quelle machine Windows à partir de XP forward. Une documentation complète est intégrée au script.

En supposant que JREN.BAT se trouve dans votre répertoire actuel ou, mieux encore, quelque part dans votre chemin, votre tâche de changement de nom devient triviale.

jren "^\d+[ -]+(.+)\.txt$" "$1" /i

ou

jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"

Il existe de nombreuses options, y compris l'option /S qui effectue le changement de nom de manière récursive sur les sous-répertoires.

1
dbenham

Voici un autre programme simple appelé File Attribute Changer que vous pouvez utiliser pour renommer des fichiers. C'est un programme portable, vous pouvez donc le transporter sur une clé USB.

http://www.softpedia.com/get/Desktop-Enhancements/Other-Desktop-Enhancements/File-Attribute-Changer.shtml

1
Brian

Si vous avez besoin d'énergie sérieuse et que vous êtes prêt à dépenser de l'argent ... PowerGrep est l'un des outils les plus puissants et les plus polyvalents du marché ... vous pouvez renommer presque n'importe quoi avec PowerGrep ... même la recherche binaire et remplacer ... il est créé par RegEx Guru, Jan Goyvaerts .

enter image description here

0
Eddie B