[bat] Compter le nombre de variables

Fermé
Killraider Messages postés 65 Date d'inscription lundi 31 janvier 2011 Statut Membre Dernière intervention 25 mai 2016 - Modifié par jipicy le 24/05/2016 à 18:03
Killraider Messages postés 65 Date d'inscription lundi 31 janvier 2011 Statut Membre Dernière intervention 25 mai 2016 - 25 mai 2016 à 18:15
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

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 24/05/2016 à 18:34
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
25 mai 2016 à 14:45
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 lundi 31 janvier 2011 Statut Membre Dernière intervention 25 mai 2016 2
25 mai 2016 à 14:26
Merci fiddy,

Je vais étudier tout ça :)
0
Killraider Messages postés 65 Date d'inscription lundi 31 janvier 2011 Statut Membre Dernière intervention 25 mai 2016 2
25 mai 2016 à 18:15
Merci dubcek, je testerai tout ça.
0