[bat] Compter le nombre de variables

Bonjour,

Je souhaite réaliser un script bat qui permet de compter le nombre de fichiers avec la même extension dans un répertoire donné:

----------------------------------------------------------
:: Le répertoire
set local_dir=E:\Documents\

@echo off
cls

echo Parcourt les fichiers dans 'E:\Documents\'

::Récupère toutes les extensions des fichiers dans ce répertoire
for /r "%<bold>local_dir</bold>%" %%X in (*) do (
 set extension=%%~xX
 echo !extension!
)

pause


-----------------------------------------------------------

Ce bout de code affiche ceci:
.apk
.pdf
.bat
.txt
.bat
.txt
.bat
.pdf
.xls
.ods
.ods
.pdf
.xls
.odt
.pdf
.ods
.xls
.pdf
.pdf
.exe
.txt
.pdf
.xlsx
.xlsx
.pdf
.odt
.pdf


Je ne sais pas comment exploiter ce résultat. J'aimerais quelque chose de la sorte:
.pdf : 5
.xls: 4
.docx: 4

etc


J'ai pensé à l'utilisation de tableaux mais cela me parait compliqué en batch.
0) Déclare un tableau extensions[];
1) Vérifie si l'extension est présente dans le tableau
--> Si elle n'est pas présente, ajouter 1 au total
--> Si elle est présente, incrémenter le total

Merci pour l'aide.

4 réponses

  1. Contributeur
    hello
    autre méthode, créer un fichier par extension
    echo !extension! >> xxxx!extension!

    et compter le nombre de lignes avec
    > find /V /C "" xxxx.*
    1. Contributeur
      Bonjour,

      La notion de tableau n'existe pas en batch.
      Mais tu devrais t'en sortir avec l'astuce suivante :

      SET cpt=0
      Boucle FOR de 0 à %cpt%
      IF DEFINED tab_%cpt%_ext
      SET /A tab_%cpt%_count=%tab_%cpt%_count%+1
      GOTO suite
      FinBoucle For

      SET /A cpt=%cpt%+1
      SET tab_%cpt%_ext=%extension%
      SET tab_%cpt%_count=0

      suite :

      Je te laisse relire (mon batch est rouillé, mais l'idée devrait être bonne) et intégrer ça dans ton code.

      Google is your friend