Wenn Sie es mit machen wollen cmd
, dann ist das folgende die triviale Art, es zu machen:
set count=0 & for %x in (*) do @(set /a count+=1 >nul)
echo %count%
Das setzt die Kommandozeile voraus. In einer Batch-Datei würden Sie tun
@echo off
setlocal enableextensions
set count=0
for %%x in (*) do set /a count+=1
echo %count%
endlocal
was die Dinge ein wenig schöner macht. Sie können das >nul
in einem Stapel löschen, da set /a
das Ergebnis nicht angezeigt wird, wenn es über eine Stapeldatei ausgeführt wird - dies erfolgt direkt über die Befehlszeile. Außerdem muss das %
Vorzeichen in der for
Schleife verdoppelt werden.
Ich habe einige Fälle gesehen, in denen Leute geschickt Tricks ausprobieren find /c
. Seien Sie sehr vorsichtig mit denen, da verschiedene Dinge dies brechen können.
Häufige Fehler:
Verwenden Sie find /c /v
und versuchen Sie, etwas zu finden, das niemals in einem Dateinamen enthalten ist, z ::
. Gewohnheit. Arbeit. Zuverlässig. Wenn das Konsolenfenster auf Raster-Schriftarten eingestellt ist, können Sie diese Zeichenkombination abrufen. Ich kann Zeichen in einem Dateinamen wie umfassen :
, ?
usw. in ihren vollen Breite Varianten zum Beispiel, die dann in ihren normalen ASCII Pendants umgewandelt werden erhalten , die diese brechen. Wenn Sie eine genaue Zählung benötigen, versuchen Sie dies nicht.
Verwenden Sie find /c
und versuchen Sie, etwas zu finden, das immer in einem Dateinamen enthalten ist. Offensichtlich ist der Punkt ( .
) eine schlechte Wahl. Eine andere Antwort schlägt vor
dir /a-d | find /c ":"
Dies setzt mehrere Dinge über das Gebietsschema des Benutzers voraus, von denen nicht alle garantiert wahr sind (ich habe einen Kommentar hinterlassen, in dem die Probleme aufgeführt sind) und gibt ein Ergebnis zu viel zurück.
Im Allgemeinen möchten Sie verwenden find
auf dir /b
weg denen schneidet alle Nicht-Dateinamen Material und vermeidet Fehler auf diese Weise fencepost.
Die elegante Variante wäre also:
dir /b /a-d | find /c /v ""
Dabei werden zuerst alle Dateinamen ausgegeben, jeweils eine Zeile. Und dann zählen Sie alle Zeilen dieser Ausgabe, die nicht leer sind. Da der Dateiname nicht leer sein darf (es sei denn, ich vermisse etwas, Unicode löst dies jedoch nach meinen Tests nicht aus).