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).
dir /b /a-d | find /c /v ""
%count%
est développé au moment de l'analyse.Demandez et vous recevrez: http://technet.microsoft.com/en-us/library/ee692796.aspx
FYI .. J'ai googlé "fichiers de comptage PowerShell".
la source
(Get-ChildItem -recurse -filter "*.ps1").Count
Un mot d'avertissement sur l'utilisation de PowerShell pour des opérations de fichiers simples comme celle-ci - c'est incroyablement lent par rapport à cmd.exe, en particulier sur les connexions réseau ou lorsqu'il y a des milliers de fichiers dans le répertoire. Voir ce post sur le forum pour plus d'informations.
la source
dir
vous donne le nombre total de fichiers en bas.la source
dir > file
.. ahh je manque POSIXdir > file
ne devrait pas fonctionner sous Windows? La redirection de sortie n'est pas exactement magique, vous savez.dir | grep (something)
pour éviter l'écriture lente à l'écran qui ralentit les choses (et la minimise).La méthode la plus rapide que j'ai trouvée consiste à exécuter ce qui suit dans la console PS.
où $ path est un chemin local ou un partage UNC.
la source
comptez simplement les lignes de la sortie dir / B (répertoires inclus):
dir /B | find /c /v "~~~"
pour juste compter les fichiers (sans dir):
dir /A-D /B | find /c /v "~~~"
la source
Trouvé cela sur le net:
J'ai testé et ça semble marcher.
la source
dir
commande inclut une ligne avec deux points qui n'est pas un fichier. (2) Cela repose sur le format d'heure pour inclure les deux points, ce qui ne doit pas nécessairement l'être. (3) Il s'appuie sur le format numérique sans les deux points, ce qui ne doit pas nécessairement l'être. De plus, parcourir un fichier ici n'est pas nécessaire et ne fonctionnera pas si vous n'avez pas accès en écriture - mauvaise idée.Juste une mise en garde pour ceux qui pourraient utiliser la réponse PowerShell de Trevoke ci-dessus ( invite de commande Windows: comment obtenir le nombre de tous les fichiers dans le répertoire actuel? ): Par conception, faire écho à la propriété Count d'une collection retournée par Get-ChildItem peut donner des résultats trompeurs si la valeur est 1 ou 0. En effet, la propriété Count n'est disponible que sur les tableaux. Si moins de 2 éléments sont retournés par Get-ChildItem, le résultat est scalaire et .Count ne renvoie rien. Pour contourner ce problème, convertissez-le explicitement dans un tableau, par exemple, @ (Get-ChildItem C: \ Scripts) .Count.
Pour plus d'informations, voir http://connect.microsoft.com/PowerShell/feedback/details/354672/get-childitem-count-problem-with-one-file ou http://www.vistax64.com/powershell/266379 -get-childitem-count-not-working-one-file.html .
la source
dir
renvoie le nombre de fichiers et de répertoires en basla source
DIr fonctionnera bien sûr
Sans installer quelque chose sur le serveur mais avec PowerShell sur votre poste de travail, vous pouvez faire:
cette commande vous donnera tous les fichiers (système et caché inclus) et comme mentionné précédemment si PowerShell est sur la machine, vous pouvez simplement
Notez que si vous n'incluez pas le . vous obtiendrez un décompte de tous les fichiers et de tous les répertoires. Vous n'incluerez pas les fichiers cachés et système que vous devez ajouter -force pour les compter tous
la source
Si je n'avais besoin de cela qu'une fois, j'utiliserais simplement dir, sinon j'envisagerais de lancer la mienne, probablement comme une application C # car c'est ce que je connais le mieux (bien que VBScript ou PowerShell soit également viable).
(Au fait - ce n'est pas DOS si vous utilisez cmd.exe)
la source
Je pense que vous pouvez utiliser attrib pour obtenir le nombre de fichiers:
Cela créera un fichier appelé filecount.txt dans le répertoire actuel avec le nombre de fichiers et de dossiers dans le répertoire actuel (y compris le fichier nouvellement créé). Vous pouvez changer le
à
afin d'obtenir le nombre de fichiers d'un répertoire particulier. Supprimez l'option "/ D" si vous ne voulez pas compter les dossiers. L'option "/ s" traite les fichiers dans tous les répertoires du chemin spécifié. Supprimez-le donc si vous voulez uniquement des fichiers dans le chemin spécifié et que vous ne voulez pas inclure de fichiers dans des sous-dossiers.
Ainsi, par exemple, si vous souhaitez savoir combien de fichiers se trouvent dans votre lecteur C: \ et non dans un sous-dossier, vous utiliserez la commande:
la source
Je fais quelque chose de similaire et cela fonctionne instantanément avec n'importe quel nombre de fichiers.
la source
find
n'est pas une bonne idée. Voir la réponse acceptée pour plus de détails.