[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
    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
    1
    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
      1. Merci fiddy,

        Je vais étudier tout ça :)
        0
        1. Merci dubcek, je testerai tout ça.
          0