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).
dir /b /a-d | find /c /v ""
%count%
es zur Analysezeit erweitert wird.Fragen Sie und Sie erhalten: http://technet.microsoft.com/en-us/library/ee692796.aspx
Zu Ihrer Information ... Ich habe "Powershell Count Files" gegoogelt.
quelle
(Get-ChildItem -recurse -filter "*.ps1").Count
Ein Hinweis zur Verwendung von PowerShell für einfache Dateioperationen wie diese: Es ist im Vergleich zu cmd.exe unglaublich langsam, insbesondere über Netzwerkverbindungen oder wenn sich Tausende von Dateien im Verzeichnis befinden. Weitere Informationen finden Sie in diesem Forumsbeitrag .
quelle
dir
gibt Ihnen die Gesamtanzahl der Dateien am unteren Rand.quelle
dir > file
.. ahh ich vermisse POSIXdir > file
sollte das nicht unter Windows funktionieren? Die Ausgabeumleitung ist nicht gerade magisch, wissen Sie.dir | grep (something)
, um das langsame Schreiben auf dem Bildschirm zu vermeiden, das die Dinge verlangsamt (und es insgesamt minimiert).Die schnellste Methode, die ich gefunden habe, besteht darin, Folgendes in der PS-Konsole auszuführen.
Dabei ist $ path ein lokaler Pfad oder eine UNC-Freigabe.
quelle
Zählen Sie einfach die Zeilen aus der Ausgabe von dir / B (Verzeichnisse eingeschlossen):
dir /B | find /c /v "~~~"
Nur Dateien zählen (ohne Verzeichnisse):
dir /A-D /B | find /c /v "~~~"
quelle
Fand dies im Netz:
Ich habe getestet und es scheint zu funktionieren.
quelle
dir
Befehl eine Zeile mit einem Doppelpunkt enthält, bei der es sich nicht um eine Datei handelt. (2) Dies hängt vom Zeitformat ab, um einen Doppelpunkt einzuschließen, was nicht unbedingt der Fall sein muss. (3) Es basiert auf dem Zahlenformat ohne Doppelpunkt, was auch nicht unbedingt so sein muss. Außerdem ist das Durchsuchen einer Datei hier nicht erforderlich und funktioniert nicht, wenn Sie keinen Schreibzugriff haben - eine schlechte Idee.Nur eine Einschränkung für diejenigen, die möglicherweise die obige PowerShell-Antwort von Trevoke verwenden ( Windows-Eingabeaufforderung: Wie wird die Anzahl aller Dateien im aktuellen Verzeichnis ermittelt? ): Das Echo der Count-Eigenschaft einer von Get-ChildItem zurückgegebenen Auflistung kann beabsichtigt zu irreführenden Ergebnissen führen Wenn der Wert 1 oder 0 ist. Dies liegt daran, dass die Count-Eigenschaft nur für Arrays verfügbar ist. Wenn von Get-ChildItem weniger als 2 Elemente zurückgegeben werden, ist das Ergebnis skalar und .Count gibt nichts zurück. Um dies zu umgehen, müssen Sie es explizit in ein Array umwandeln, z. B. @ (Get-ChildItem C: \ Scripts) .Count.
Weitere Informationen finden Sie unter http://connect.microsoft.com/PowerShell/feedback/details/354672/get-childitem-count-problem-with-one-file oder http://www.vistax64.com/powershell/266379 -get-childitem-count-not-working-one-file.html .
quelle
dir
Gibt die Anzahl der Dateien und Verzeichnisse unten zurückquelle
DIr wird natürlich arbeiten
Ohne etwas auf dem Server zu installieren, aber PowerShell auf Ihrer Workstation zu haben, können Sie Folgendes tun:
Dieser Befehl gibt Ihnen alle Dateien (System und versteckt enthalten) und wie bereits erwähnt, wenn Powershell auf dem Computer ist, können Sie einfach
Beachten Sie, dass, wenn Sie das nicht einschließen . Sie erhalten eine Zählung aller Dateien und aller Verzeichnisse. Sie werden keine versteckten und Systemdateien einschließen, die Sie hinzufügen müssen - force, um sie alle zu zählen
quelle
Wenn ich das nur einmal brauchte, würde ich nur dir verwenden, andernfalls würde ich erwägen, meine eigene zu rollen, wahrscheinlich als C # -App, weil ich damit am besten vertraut wäre (obwohl VBScript oder PowerShell auch brauchbar wären).
(Übrigens - es ist nicht DOS, wenn Sie cmd.exe verwenden)
quelle
Ich glaube, Sie können attrib verwenden, um die Anzahl der Dateien zu erhalten:
Dadurch wird eine Datei mit dem Namen filecount.txt im aktuellen Verzeichnis mit der Anzahl der Dateien und Ordner im aktuellen Verzeichnis (einschließlich der neu erstellten Datei) erstellt. Sie können das ändern
zu
um die Anzahl der Dateien eines bestimmten Verzeichnisses zu erhalten. Entfernen Sie die Option "/ D", wenn Sie keine Ordner zählen möchten. Die Option "/ s" verarbeitet Dateien in allen Verzeichnissen im angegebenen Pfad. Entfernen Sie sie daher, wenn Sie nur Dateien im angegebenen Pfad und keine Dateien in Unterordnern speichern möchten.
Wenn Sie beispielsweise herausfinden möchten, wie viele Dateien sich in Ihrem Laufwerk C: \ und nicht in einem Unterordner befinden, verwenden Sie den folgenden Befehl:
quelle
Ich mache etwas Ähnliches und das funktioniert sofort mit einer beliebigen Anzahl von Dateien.
quelle
find
ist keine gute Idee. Einzelheiten finden Sie in der akzeptierten Antwort.