Nombre de fichiers dans 1 répertoire et ses sous-répertoires

Fermé
NemoNemini Messages postés 25 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 8 août 2024 - 7 juil. 2023 à 16:01
brucine Messages postés 17762 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 19 novembre 2024 - 8 juil. 2023 à 09:50

Bonjour,
Comment connaître le nombre total de FICHIERS contenus dans un répertoire et tous ses sous-[sous-]sous-][etc.]répertoires? ( En espérant que les dossiers ne soient pas comptés eux-mêmes comme éléments à part entière!). Mon PC tourne sous Windows 11; et j'ai l'impression que mon explorateur Windows est incomplet dans ses menus... À voir peut-être avec vous!
Merci beaucoup d'avance!
NN
 

1 réponse

Panth33ra Messages postés 21031 Date d'inscription mercredi 8 juillet 2020 Statut Membre Dernière intervention 19 novembre 2024 Ambassadeur 1 867
7 juil. 2023 à 16:39

Bonjour,

Le principe semble étre le même sur Windows 10 et 11... Consulte ce lien.


1
brucine Messages postés 17762 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 19 novembre 2024 2 592
7 juil. 2023 à 17:09

Bonjour,

à la ligne de commande, la commande DIR ne différencie pas les dossiers et les fichiers.

Si je ne veux que les fichiers, qu'ils soient ou non imbriqués dans des répertoires, je dois utiliser la commande FIND, dans l'exemple suivant pour tout le disque C:

attrib /s c:\*.* | find /c "\"

Si la commande est lancée depuis le répertoire de départ (dans le cas d'espèce pas d'une autre partition par exemple E:), le résultat a une erreur par excès de 1.

0
NemoNemini Messages postés 25 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 8 août 2024 > brucine Messages postés 17762 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 19 novembre 2024
7 juil. 2023 à 22:03

Merci beaucoup, Brucine, pour ces précisions!
Le nombre de fichiers affiché est donc majoré de 1, si je vous ai bien compris-e?
Cordialement,

0
brucine Messages postés 17762 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 19 novembre 2024 2 592 > NemoNemini Messages postés 25 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 8 août 2024
8 juil. 2023 à 09:16

Oui, tout à fait.

On peut écrire un script batch pour soustraire le "fichier" excédentaire résultant de la commande FIND, il suffit d'intégrer la commande attrib... à une boucle FOR qu'on sort vers une variable puis de soustraire une unité à cette variable via une commande SET /A mais bon, du travail pour pas grand-chose.

Un exemple antédiluvien (By Courtesy of Timo Salmi, autour de 2010); cette solution passant par DIR ne compte pas elle le fichier excédentaire:

 

@echo off & setlocal enableextensions
  set startFolder=C:\_D
  set /a countf_=0
  for /f %%f in ('dir /s /b /a:-d "%startFolder%\*.*"') do set /a countf_+=1
  echo Found %countf_% files
  pause
  endlocal & goto :EOF
0
brucine Messages postés 17762 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 19 novembre 2024 2 592 > brucine Messages postés 17762 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 19 novembre 2024
8 juil. 2023 à 09:50

Je n'obtiens paradoxalement pas la fameuse erreur de calcul avec attrib; si on tient à passer par cette voie, on va après vérification sur un dossier contenant peu de fichiers et selon le résultat supprimer soit la première ligne ECHO soit les deux suivantes.

 

FOR /f "delims=" %%f IN ('attrib /s C:\Users\brucine\Desktop\Films\*.* ^| find /v "File not found - " ^| find /c /v ""') DO SET count=%%f
ECHO %count%
SET /A "count=count-1"
ECHO %count%
pause
0
NemoNemini Messages postés 25 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 8 août 2024
7 juil. 2023 à 22:00

Bonsoir! Mille mercis pour cette prompte réponse! C'est donc aussi simple que ça... J'ai dû le savoir quand j'avais encore toute ma tête :-D
Merci encore pour votre aide, fort précieuse.
Cordialement.

0