[bat] Compter le nombre de variables

Killraider Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
Killraider Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
Killraider Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci fiddy,

Je vais étudier tout ça :)
0
Killraider Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci dubcek, je testerai tout ça.
0