HOWTO · Batch

Renommer un fichier dans un script Batch

Apprenez à renommer un ou plusieurs fichiers dans un script Batch Windows avec ren, rename, des caractères génériques, des chemins, des variables et des boucles for.

Sur cette page

Utilisez la commande ren (ou rename) dans un fichier Batch Windows pour modifier un nom de fichier sans déplacer le fichier. La commande fonctionne dans cmd.exe, et un fichier .bat ou .cmd peut l’appliquer plusieurs fois aux fichiers correspondants. Les exemples ci-dessous utilisent le répertoire actuel lorsqu’aucun chemin source n’est indiqué.

Commande de renommage de base dans un script Batch

La syntaxe est la suivante :

ren <old-name> <new-name>

rename est la forme longue équivalente de ren. Mettez entre guillemets les noms contenant des espaces :

@echo off
ren "old report.txt" "new report.txt"

En cas de réussite, cmd.exe n’affiche généralement aucun message. Vérifiez le résultat avec dir ou en contrôlant que le nouveau nom existe. La destination est un nouveau nom, pas un second chemin : ren ne peut pas déplacer un fichier vers un autre répertoire ou lecteur. Utilisez move si l’opération doit aussi changer de répertoire.

Renommer plusieurs fichiers avec des caractères génériques

Les caractères génériques permettent à une commande de correspondre à plusieurs noms source. Cette commande modifie l’extension de chaque fichier .txt du répertoire actuel tout en conservant son nom de base :

@echo off
ren "*.txt" "*.bak"

Par exemple, notes.txt devient notes.bak et report.txt devient report.bak. Le * de la destination correspond au nom de base source ; il ne donne pas littéralement le nom *.bak à chaque fichier. Le caractère ? correspond à une position et peut restreindre un motif, par exemple ren "log?.txt" "archived-?.txt".

Renommer un fichier dans un répertoire précis

La source peut inclure un lecteur et un répertoire :

@echo off
ren "C:\Work\incoming\report.txt" "report-old.txt"

Le fichier renommé reste dans C:\Work\incoming. N’indiquez pas de répertoire dans le second argument, comme dans ren "C:\Work\incoming\report.txt" "C:\Work\archive\report.txt" ; ce serait un déplacement, hors de la syntaxe de ren. Exécutez le fichier Batch avec les droits permettant de modifier le répertoire source.

Utiliser des variables et une boucle for

Les variables sont utiles lorsqu’une autre commande construit l’ancien ou le nouveau nom, ou lorsqu’un utilisateur le saisit. Mettez l’affectation entre guillemets pour éviter les espaces parasites :

@echo off
set "oldname=old report.txt"
set "newname=reviewed report.txt"
ren "%oldname%" "%newname%"

Pour ajouter un préfixe à chaque fichier .txt, utilisez une boucle for. %%F est la forme de la variable de boucle dans un fichier Batch, et %%~nxF développe le nom et l’extension d’origine :

@echo off
for %%F in (*.txt) do ren "%%F" "new_%%~nxF"

Testez d’abord la commande dans une copie du répertoire. Une destination déjà existante peut faire échouer le renommage, et un motif sans correspondance ne renomme rien. Une boucle peut aussi rencontrer une collision en cours de route ; inspectez donc le répertoire après la commande et gardez des sauvegardes si les noms sont importants.

Questions fréquentes

ren et rename sont-ils des commandes différentes ?

Non. Dans cmd.exe, rename est la forme longue de ren.

Pourquoi le renommage a-t-il échoué ?

Vérifiez que la source existe, que la destination n’est pas déjà utilisée, que les guillemets sont corrects et que le fichier Batch peut accéder au répertoire. Une source absente produit une erreur au lieu de créer un fichier. Un chemin de destination est également invalide, car ren renomme dans le répertoire source.

Puis-je renommer un répertoire ?

Oui, ren peut renommer un répertoire, mais la destination ne peut toujours pas indiquer un autre chemin. Utilisez move pour le déplacer.