[bat] Compter le nombre de variables

Killraider Messages postés 67 Statut Membre -  
Killraider Messages postés 67 Statut Membre -
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. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
  3. Killraider Messages postés 67 Statut Membre 2
     
    Merci fiddy,

    Je vais étudier tout ça :)
    0
  4. Killraider Messages postés 67 Statut Membre 2
     
    Merci dubcek, je testerai tout ça.
    0