J'ai des images avec des noms de fichiers comme 0034343.jpg
et je veux supprimer les zéros 34343.jpg
, en laissant 34343.jpg
comme nouveau nom de fichier.
Comment puis-je le faire dans l'invite de commande? J'ai essayé REN 00*.jpg *.jpg
, mais cela n'a pas marché.
Vous devriez commencer par:
@setlocal enableextensions enabledelayedexpansion @echo off for /f "delims=*" %%a IN ('dir /b 00*.jpg') do ( set file=%%a set newfile=!file:~2! echo move !file! !newfile! ) endlocal
Ceci, tel qu'il se présente, fait simplement écho à la commande de move
. Retirez l' echo
une fois que vous avez fini de tester. Et gardez à l'esprit que cela peut ne pas fonctionner comme prévu si vos noms de fichiers ont des espaces dans eux.
Parcourez-le peu à peu:
setlocal
permet certaines extensions cmd.exe
, le chef étant la possibilité de diluer l'expansion des variables d'environnement à l'intérieur for
boucles. for
lance le cmd dir /b 00*.jpg
, en faisant une itération par fichier (paramètre %%a
au nom du fichier). set
enregistre simplement le nom de fichier dans une variable. La seconde est une opération de sous-chaîne commençant au troisième caractère. move
renverra le fichier. Vous pouvez examiner les différentes commandes en entrant des commandes d' help
sur la ligne de commande:
setlocal /? set /? for /? set /?
Essaye ça:
for %i in (*.jpg) do ( set filename=%~nxi set newname=%filename:~2% ren !filename! !newname! )
Cela éliminera simplement deux caractères du début de chaque nom de fichier. L'expansion retardée doit être activée. Peut être nécessaire de faire cmd.exe /v:on
premier sur XP.