Renommer 300 photos de vacances, uniformiser des noms de factures, numéroter des fichiers dans l’ordre… À la main, c’est long et source d’erreurs. PowerShell, installé d’office sur Windows, le fait en une commande.
Pas besoin de savoir programmer : ce tutoriel donne des commandes prêtes à adapter, toutes avec un mode test qui montre le résultat avant de toucher aux fichiers.
À retenir Ajoutez toujours
-WhatIfà la fin de la commande pour un premier essai. PowerShell affiche alors ce qu’il ferait, sans rien modifier. Quand le résultat vous convient, relancez la même commande sans-WhatIf.
Avant de commencer
- Faites une copie du dossier. Un renommage n’a pas de bouton « Annuler ».
- Ouvrez PowerShell directement dans le dossier. Dans l’Explorateur, faites un clic droit dans le dossier puis choisissez « Ouvrir dans le Terminal ». Sur Windows 10 : Maj + clic droit, puis « Ouvrir la fenêtre PowerShell ici ».
- Vérifiez que vous êtes au bon endroit en tapant
Get-ChildItem: la liste des fichiers du dossier s’affiche.
1. Remplacer un mot dans tous les noms
Pour transformer IMG_0001.jpg en Vacances_0001.jpg :
(Get-ChildItem -File) | Rename-Item -NewName { $_.Name -replace 'IMG_', 'Vacances_' } -WhatIf
Comment lire cette commande :
Get-ChildItem -Fileliste les fichiers du dossier, sans les sous-dossiers ;- les parenthèses autour de cette commande font établir la liste complète avant de renommer. Sans elles, un fichier déjà renommé peut être traité une deuxième fois ;
$_désigne le fichier en cours de traitement, et$_.Nameson nom ;-replace 'ancien', 'nouveau'remplace le texte.
-replace utilise des expressions régulières : certains caractères comme ., (, ), [ ou + ont un sens spécial. Pour remplacer un point littéral, écrivez '\.'. Pour un texte simple, utilisez plutôt la méthode .Replace(), qui ne connaît pas ces caractères spéciaux :
(Get-ChildItem -File) | Rename-Item -NewName { $_.Name.Replace('(copie)', '') } -WhatIf
2. Ajouter un préfixe ou un suffixe
Ajouter 2026_ devant chaque nom :
(Get-ChildItem -File) | Rename-Item -NewName { '2026_' + $_.Name } -WhatIf
Ajouter _final avant l’extension (rapport.pdf devient rapport_final.pdf) :
(Get-ChildItem -File) | Rename-Item -NewName { $_.BaseName + '_final' + $_.Extension } -WhatIf
BaseName est le nom sans l’extension, et Extension est l’extension, point compris.
Si vous relancez une commande d’ajout, le préfixe est ajouté une deuxième fois (2026_2026_photo.jpg). Ne l’exécutez qu’une fois.
3. Ne traiter qu’un type de fichier
Ajoutez un filtre à Get-ChildItem. Par exemple, uniquement les fichiers .jpg :
(Get-ChildItem -File -Filter *.jpg) | Rename-Item -NewName { $_.Name -replace ' ', '_' } -WhatIf
Cette commande remplace les espaces par des tirets bas, ce qui est pratique pour des fichiers destinés à un site web.
4. Numéroter les fichiers dans l’ordre
Pour obtenir Photo_001.jpg, Photo_002.jpg… triés par date de modification :
$i = 1
Get-ChildItem -File -Filter *.jpg | Sort-Object LastWriteTime | ForEach-Object {
$nouveau = 'Photo_{0:D3}{1}' -f $i, $_.Extension
Rename-Item -LiteralPath $_.FullName -NewName $nouveau -WhatIf
$i++
}
{0:D3}écrit le numéro sur 3 chiffres (001,002…). MettezD4au-delà de 999 fichiers.- Remplacez
LastWriteTimeparNamepour trier par nom plutôt que par date. Sort-Objectétablit la liste complète avant la boucle, donc aucun fichier n’est traité deux fois.
Si des fichiers portent déjà le nom visé (par exemple Photo_001.jpg), le renommage échouera pour ceux-là. Le mode -WhatIf ne détecte pas toujours ce conflit : lisez bien les messages d’erreur lors de la vraie exécution.
5. Renommer avec la date du fichier
Pour transformer des noms illisibles en 2026-09-18_143522.jpg :
(Get-ChildItem -File -Filter *.jpg) | Rename-Item -NewName {
$_.LastWriteTime.ToString('yyyy-MM-dd_HHmmss') + $_.Extension
} -WhatIf
Le format année-mois-jour a un avantage : l’ordre alphabétique devient l’ordre chronologique. Attention, deux fichiers modifiés à la même seconde obtiendraient le même nom, et le second renommage échouerait.
La date utilisée ici est celle de dernière modification du fichier, pas forcément la date de prise de vue d’une photo. Si les photos ont été copiées ou retouchées, cette date peut avoir changé.
Inclure les sous-dossiers
Ajoutez -Recurse pour traiter aussi le contenu des sous-dossiers :
(Get-ChildItem -File -Recurse -Filter *.pdf) | Rename-Item -NewName { $_.Name -replace 'Facture', 'FAC' } -WhatIf
Soyez d’autant plus prudent : la commande peut toucher beaucoup de fichiers. Relisez attentivement le résultat du -WhatIf.
En résumé
Trois réflexes suffisent pour renommer en masse sans risque :
- travailler sur une copie ;
- lancer d’abord avec
-WhatIf; - entourer
Get-ChildItemde parenthèses, ou trier avecSort-Object, pour figer la liste avant de renommer.
Vous pouvez aller plus loin en enregistrant la commande dans un script et en la programmant avec le Planificateur de tâches, par exemple pour classer automatiquement un dossier de téléchargements.