Renommer dans l'invite de commande

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:

  • Le setlocal permet certaines extensions cmd.exe , le chef étant la possibilité de diluer l'expansion des variables d'environnement à l'intérieur for boucles.
  • La boucle for lance le cmd dir /b 00*.jpg , en faisant une itération par fichier (paramètre %%a au nom du fichier).
  • Le premier 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.
  • Le 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.