Modification des extensions de tous les fichiers dans un dossier avec une seule commande sous Windows


145

Comment puis-je utiliser la ligne de commande Windows pour modifier les extensions de milliers de fichiers en *****.jpg?


que voulez-vous dire en changeant toutes les extensions en *****. jpg? cela signifie-t-il toutes les extensions de fichiers en jpg? si oui, utilisez ren . * .jpg
Imran Rizvi

quel système d'exploitation? Comment voulez-vous les changer?
bryce

@bryce système d'exploitation Windows bien sûr ..
Berker Yüceer

Réponses:


300

Vous pouvez utiliser ren(comme pour renommer ):

ren *.XXX *.YYY

Et bien sûr, changez XXX et YYY pour les extensions appropriées. Il passera de XXX à YYY. Si vous souhaitez modifier toutes les extensions, utilisez simplement à nouveau le caractère générique:

ren *.* *.YYY

Une façon de faire fonctionner ce travail de manière récursive consiste à utiliser la FORcommande. Il peut être utilisé avec l' /Roption d'appliquer récursivement une commande aux fichiers correspondants. Par exemple:

for /R %x in (*.txt) do ren "%x" *.renamed

changera toutes les .txtextensions en .renamedrécursivement, en commençant dans le répertoire courant. %xest la variable qui contient les noms de fichiers correspondants.

Et, puisque vous avez des milliers de fichiers, assurez-vous d'attendre que le curseur recommence à clignoter pour indiquer que le fonctionnement est terminé.

Remarque: cela ne fonctionne que sur cmd. Ne fonctionnera pas sur Powershell ou Bash


* .XXX changera les fichiers pour cette extension particulière (signifie qu'il renommera tous les fichiers avec l'extension XXX)
Habib

@ keyser5053 puis-je également obtenir un rapport sur l'action effectuée ici .. avec l'utilisation ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt?
Berker Yüceer

Et que diriez-vous du remplacement récursif dans tous les sous-répertoires?
NightElfik

@NightElfik J'ai ajouté un exemple récursif qui utiliseFOR
keyser

4
Je ne pouvais pas faire fonctionner cela dans PowerShell, mais cela fonctionnait bien dans cmd.exe. Juste pour que les autres soient conscients.
hazzey

20

sur CMD

type

ren *.* *.jpg

. sélectionnera tous les fichiers et les renommera en * (quel que soit leur nom) plus l'extension en jpg


10

Le comportement de changement de nom est parfois «moins qu'intuitif»; par exemple...

ren * .THM * .jpg renommera vos fichiers THM pour avoir une extension de .jpg. par exemple: GEDC003.THM sera GEDC003.jpg

ren * .THM * b.jpg renommera vos fichiers THM en * .THMb.jpg. par exemple: GEDC004.THM deviendra GEDC004.THMb.jpg

ren * .THM * .b.jpg renommera vos fichiers THM en * .b.jpg par exemple: GEDC005.THM deviendra GEDC005.b.jpg


belle explication
Arslan Ahmad

7

REMARQUE: pas pour Windows

En utilisant ren-1.0, la forme correcte est:

"ren *.*" "#2.jpg"

De man ren

Le modèle de remplacement est un autre nom de fichier avec des index génériques incorporés, dont chacun se compose du caractère # suivi d'un chiffre de 1 à 9. Dans le nouveau nom d'un fichier correspondant, les index génériques sont remplacés par les caractères réels qui correspondent à la référence des caractères génériques dans le nom de fichier d'origine.

et

Notez que le shell développe normalement les caractères génériques * et?, Ce qui dans le cas de ren n'est pas souhaitable. Ainsi, dans la plupart des cas, il est nécessaire de mettre le modèle de recherche entre guillemets.


J'ai dû utiliser # 1: ren "* .csv" "# 1.json"
elmalto

1
man ren? La question concernait Windows / cmd. Est-ce que ceux-ci fournissent maintenant des manpages? Qu'est-ce que ren-1.0et comment visualiser sa manpage en contexte?
underscore_d


3

Juste pour les personnes qui cherchent à faire cela dans des fichiers batch, ce code fonctionne:

FOR /R "C:\Users\jonathan\Desktop\test" %%f IN (*.jpg) DO REN "%%f" *.png

Dans cet exemple, tous les fichiers avec des extensions .jpg dans le répertoire C: \ Users \ jonathan \ Desktop \ test sont remplacés par * .png.


2

Renommez plusieurs extensions de fichier:

Vous voulez changer ringtone1.mp3, ringtone2.mp3à ringtone1.wav,ringtone2.wav

Voici comment faire cela: Je suis dans le lecteur d sur l'invite de commande (CMD) donc j'utilise:

d:\>ren *.* *.wav 

Ceci est juste un exemple d'extensions de fichiers, vous pouvez utiliser n'importe quel type d'extension de fichier comme WAV, MP3, JPG, GIF, bmp, PDF, DOC, DOCX, TXT cela dépend de votre système d'exploitation.

Et, puisque vous avez des milliers de fichiers, assurez-vous d'attendre que le curseur recommence à clignoter pour indiquer que le fonctionnement est terminé.


1

Dans mon cas, j'avais un répertoire avec plus de 800 fichiers se terminant par .StoredProcedure.sql(ils ont été scriptés avec SSMS ).

Les solutions affichées ci-dessus n'ont pas fonctionné. Mais je suis venu avec ceci:

(Basé sur les réponses à la programmation par lots - obtenir le chemin relatif du fichier )

@echo off
setlocal enabledelayedexpansion
for %%f in (*) do (
  set B=%%f
  set B=!B:%CD%\=!
  ren "!B!" "!B:.StoredProcedure=!"
)

Le script ci-dessus supprime la sous-chaîne .StoredProceduredu nom de fichier. Je suis sûr qu'il peut être adapté pour couvrir plus de cas, demander des commentaires et être globalement plus générique.


2
remplacer vos deux setcommandes avec un seul: set "B=%%~nxf". ( %%~nxfEst n ame et e x tension %%f). %cd%peut être invalide, lorsque vous le faites récursif.
Stephan


0

Une autre façon de renommer des fichiers à l'aide du package renamer npm.

ci-dessous est un exemple de changement de nom des extensions de fichiers

renamer -d --path-element ext --find ts --replace js *

0

Ce qui a fonctionné pour moi est celui-ci (cd dans le dossier en premier):

Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.