Comment puis-je utiliser la ligne de commande Windows pour modifier les extensions de milliers de fichiers en *****.jpg
?
Comment puis-je utiliser la ligne de commande Windows pour modifier les extensions de milliers de fichiers en *****.jpg
?
Réponses:
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 FOR
commande. Il peut être utilisé avec l' /R
option d'appliquer récursivement une commande aux fichiers correspondants. Par exemple:
for /R %x in (*.txt) do ren "%x" *.renamed
changera toutes les .txt
extensions en .renamed
récursivement, en commençant dans le répertoire courant.
%x
est 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
ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt
?
FOR
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
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.
man ren
? La question concernait Windows / cmd
. Est-ce que ceux-ci fournissent maintenant des man
pages? Qu'est-ce que ren-1.0
et comment visualiser sa man
page en contexte?
c'est simple
ren *.* *.jpg
essayez ceci dans l'invite de commande
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.
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é.
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 .StoredProcedure
du 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.
set
commandes avec un seul: set "B=%%~nxf"
. ( %%~nxf
Est n ame et e x tension %%f
). %cd%
peut être invalide, lorsque vous le faites récursif.
Je sais que c'est si ancien, mais j'ai atterri dessus, et les réponses fournies ne fonctionnaient pas pour moi sur PowerShell, donc après la recherche, j'ai trouvé cette solution
pour le faire dans PowerShell
Get-ChildItem -Path C:\Demo -Filter *.txt | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".old")}
le crédit va à http://powershell-guru.com/powershell-tip-108-bulk-rename-extensions-of-files/