web-dev-qa-db-fra.com

Renommer plusieurs fichiers d'un répertoire à l'aide d'un script de traitement par lots

J'ai environ 1000 images et leur nom s'appelle "IMG-12223". Je veux les renommer 1 2 3 4 ... 1000. Comment puis-je faire cela. J'ai écrit un script batch qui liste les fichiers mais je ne sais pas comment renommer chaque fichier. par exemple. renommer la première image avec le nom "IMG-12223" en 1, la deuxième image avec le nom "IMG-23441" en 2 et ainsi de suite ...

for /r %%i in (*) do (
    echo %c% 
)
8
Jack Mc Lauren

Il n'y a pas besoin d'un script batch. Une simple ligne de commande peut faire le travail :-)

J'utilise DIR/B pour générer la liste des fichiers, dirigée vers FINDSTR pour numéroter les fichiers, tous joints à FOR/F pour analyser le résultat et effectuer le changement de nom.

for /f "delims=: tokens=1*" %A in ('dir /b *.jpg^|findstr /n "^"') do @ren "%B" "%A%~xB"

Doublez les pourcentages si vous souhaitez placer la commande dans un script batch.

7
dbenham

Essayez ceci, vous avez une paire de valeurs de nom dans un fichier texte, puis bouclez les valeurs et faites la magie. Namevalues ​​sont séparés par des espaces vides. Cela vous permet de mapper les anciens -> nouveaux noms de fichiers en conséquence. Ou vous gardez idx + 1 compteur et l’utilisez pour les nouveaux noms de fichiers.

keyvalue.bat

@echo off
set idx=0
for /F "tokens=1,2" %%A in (keyvalue.txt) do call :PROCESS "%%A"  "%%B"
GOTO :END

:PROCESS
set var1=%~1
set var2=%~2
set /A idx=%idx%+1
echo %var1% goes to %var2% (%idx%)
GOTO :EOF

:END
pause

keyvalue.txt

file888.dat  newfile1.dat
file333.dat  newfile2.dat
file9.dat    newfile3.dat
file01.dat   newfile4.dat
0
Whome