Si vous voulez le faire avec cmd
, alors voici la façon la plus simple de le faire:
set count=0 & for %x in (*) do @(set /a count+=1 >nul)
echo %count%
Cela suppose la ligne de commande. Dans un fichier batch, vous feriez
@echo off
setlocal enableextensions
set count=0
for %%x in (*) do set /a count+=1
echo %count%
endlocal
ce qui fait les choses un peu mieux. Vous pouvez supprimer le >nul
dans un lot, car set /a
n'affichera pas le résultat s'il est exécuté à partir d'un fichier de commandes, il le fait directement à partir de la ligne de commande. De plus, le %
signe dans la for
boucle doit être doublé.
J'ai vu pas mal d'exemples où les gens essayent des astuces astucieuses avec find /c
. Soyez très prudent avec ceux-ci, car diverses choses peuvent casser cela.
Erreurs fréquentes:
Utiliser find /c /v
et essayer de trouver quelque chose qui n'est jamais inclus dans un nom de fichier, tel que ::
. Habitude. Travail. De manière fiable. Lorsque la fenêtre de la console est définie sur des polices raster, vous pouvez obtenir ces combinaisons de caractères. Je peux inclure des caractères dans un nom de fichier tel que :
, ?
, etc. , dans leurs variantes pleine largeur par exemple, qui seront ensuite converties à leurs homologues ASCII normaux qui cassera cela. Si vous avez besoin d'un décompte précis, n'essayez pas.
Utiliser find /c
et essayer de trouver quelque chose qui est toujours inclus dans un nom de fichier. De toute évidence, le point ( .
) est un mauvais choix. Une autre réponse suggère
dir /a-d | find /c ":"
ce qui suppose plusieurs choses sur les paramètres régionaux de l'utilisateur, qui ne sont pas toutes garanties être vraies (j'ai laissé un commentaire détaillant les problèmes là-bas) et renvoie un résultat de trop.
En général, vous voulez utiliser find
sur ce dir /b
qui retranche tous les trucs non-nom de fichier et évite fencepost erreurs de cette façon.
La variante élégante serait donc:
dir /b /a-d | find /c /v ""
qui affichera d'abord tous les noms de fichiers, une ligne chacun. Et puis comptez toutes les lignes de cette sortie qui ne sont pas vides. Étant donné que le nom de fichier ne peut pas être vide (sauf s'il me manque quelque chose, mais Unicode ne déclenchera pas cela selon mes tests).