J'ai beaucoup de fichiers avec un mot-clé similaire
computer-stock-photo.jpg computer-stock-picture.jpg computer-picture.jpg
Ce que je veux faire, c'est suffixe en série à 2 chiffres comme
computer-stock-photo-01.jpg, computer-stock-picture-02.jpg, computer-picture-03.jpg
En outre, le script batch devrait fonctionner avec n'importe quelle extension comme jpg ou png.
Le script que j'ai essayé:
@echo off setlocal disableDelayedExpansion set "chars=0123456789" for /f "eol=: delims=" %%F in ('dir /b /ad *.jpg') do call :renameFile "%%F" exit /b :renameFile setlocal enableDelayedExpansion :retry set "name=" for /l %%N in (1 1 8) do ( set /a I=!random!%%36 for %%I in (!I!) do set "name=!name!!chars:~%%I,1!" ) echo if exist !name!.jpg goto :retry endlocal & ren %1 %name%.jpg
Le script ci-dessus ne fonctionne que pour jpg et ajoute des nombres aléatoires non sérieux.
Je crois que vous voudrez publier cette question dans Stack Overflow si vous souhaitez que quelqu'un vous aide à écrire un script à vos fins. Pour suivre les grandes lignes de ce forum, je vais vous fournir un lien vers un programme appelé Bulk Rename Utility. Il a été recommandé dans le passé par d'autres utilisateurs de Stack Exchange et semble correspondre à vos critères.
Jetez votre script inapproprié. Vous n'avez pas besoin de nombres aléatoires et ne gère pas les fichiers .png
.
J'ai écrit un nouveau script à partir de zéro comme c'était plus facile que d'essayer de corriger votre script brisé.
Utilisez le fichier de commandes suivant:
@echo off setlocal enabledelayedexpansion rem initialise counter set /a "x=1" rem process jpg and png files for /f "usebackq tokens=*" %%i in (`dir /b *.jpg *.png`) do ( rem split into name and extension set _name=%%~ni set _ext=%%~xi rem pad the counter to 2 digits set "y=0!x!" set "y=!y:~-2!" rem do the rename ren "%%i" "!_name!-!y!!_ext!" increment counter set /a "x+=1" ) endlocal
Limites:
.jpg
et .png
dans le répertoire de travail actuel. 99
fichiers.