web-dev-qa-db-fra.com

Changer toutes les extensions de fichiers dans un dossier avec une commande sous Windows

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

135
Berker Yüceer

Vous pouvez utiliser ren (comme dans renommer ):

ren *.XXX *.YYY

Et bien sûr, basculez entre XXX et YYY pour les extensions appropriées. Cela changera de XXX en YYY. Si vous souhaitez modifier toutes les extensions, utilisez à nouveau le caractère générique:

ren *.* *.YYY

Une façon de faire cela récursivement consiste à utiliser la commande FOR. Il peut être utilisé avec l'option /R pour appliquer de manière récursive une commande aux fichiers correspondants. Par exemple:

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

changera toutes les extensions .txt en .renamed récursivement, en commençant dans le répertoire actuel. %x est la variable qui contient les noms de fichiers correspondants.

Et, comme vous avez des milliers de fichiers, veillez à ce que le curseur se remette à clignoter pour indiquer que le travail est terminé.

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

273
keyser

sur CMD

type

ren *.* *.jpg

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

17
Habib

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

ren * .THM * .jpg renommera vos fichiers THM pour avoir une extension .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

9
PictureGuy

NOTE: 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, chacun étant constitué du caractère # suivi d'un chiffre compris entre 1 et 9. Dans le nouveau nom d'un fichier correspondant, les index génériques sont remplacés par les caractères réels correspondant aux références référencées. 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 est indésirable. Ainsi, dans la plupart des cas, il est nécessaire de mettre le modèle de recherche entre guillemets.

7
gbonetti

c'est simple

ren *.* *.jpg

essayez ceci dans l'invite de commande

6
Imran Rizvi

Pour les personnes cherchant à le faire dans des fichiers de commandes, ce code fonctionne:

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

Dans cet exemple, tous les fichiers avec l'extension .jpg du répertoire C:\Users\jonathan\Desktop\test sont remplacés par * .png.

2
Jonathan

Renommez plusieurs extensions de fichiers:

Vous voulez changer ringtone1.mp3, ringtone2.mp3 en 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'extension de fichier, 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, comme vous avez des milliers de fichiers, veillez à ce que le curseur se remette à clignoter pour indiquer que le travail est terminé.

2
nanduvtlr

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 à 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 .StoredProcedure du nom de fichier. Je suis sûr qu'il peut être adapté pour couvrir davantage de cas, demander des informations et être globalement plus générique.

1
Marc.2377