J'ai de nombreux fichiers dans une structure de répertoires très complexes, et pour des raisons qui ne valent pas la peine d'être discutée, je dois renommer tous les fichiers avec l'extension de ".inp" pour avoir des extensions "Txt ". Il existe de nombreux autres fichiers avec d'autres extensions que je ne veux pas être touchées et je tiens à le faire de manière récursive au moins 5 niveaux.
Jusqu'à présent j'ai:
for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd
... Mais cela ne diminue qu'un seul niveau de répertoires.
Quelqu'un peut-il aider? Merci d'avance!
for /r startdir %%i in (*.inp) do ECHO ren "%%i" "%%~ni.txt"
devrait fonctionner pour vous. Remplacez startdir
avec votre nom de détenteur de départ et lorsque vous avez vérifié ce fonctionnement à votre satisfaction, supprimez le echo
avant le ren
pour réellement faire le renommer.
Pour les bowvotes: l'exécution d'un fichier de commandes diffère de l'excustion de l'invite de commande en ce que chaque %%x
Où x
est la métavariable (variable de contrôle de la boucle) doit être réduite à %
, donc
for /r startdir %i in (*.inp) do ECHO ren "%i" "%~ni.txt"
devrait fonctionner si vous exécutez cela à partir de l'invite. Veuillez lire la note sur echo
.
Sous Windows 7, la commande d'une ligne suivante fonctionne pour moi, pour renommer tous les fichiers, récursivement, en * .js à * .txt:
FOR /R %x IN (*.js) DO ren "%x" *.txt
La réponse de John Smith est excellente et ça marche. Mais être complètement clair (j'ai dû relire les notes de Magoo pour comprendre la syntaxe correcte), voici exactement ce que vous devez faire ...
BATCH FILE:
FOR /R %%x IN (*.js) DO ren "%%x" *.txt
COMMAND LINE:
FOR /R %x IN (*.js) DO ren "%x" *.txt
Votez leurs réponses, je ne suis qu'un formater ...