it-swarm.com.de

Windows-Eingabeaufforderung: Wie erhalte ich die Anzahl aller Dateien im aktuellen Verzeichnis?

Welchen Befehl würden Sie in cmd.exe Verwenden, um die Anzahl der Dateien im aktuellen Verzeichnis zu ermitteln?

Gibt es hier eine Powershell-Option?

pdate: Ich hatte gehofft, dir zu vermeiden, da ich weiß, dass sich im aktuellen Verzeichnis mehr als 10.000 Dateien befinden. Wollte die Aufzählung der Ausgabe in das cmd-Fenster vermeiden. Vielen Dank!

24
p.campbell

Wenn Sie dies mit cmd tun möchten, ist dies die triviale Methode:

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

das macht die Dinge ein bisschen schöner. Sie können >nul In einem Stapel ablegen, da set /a Das Ergebnis nicht anzeigt, wenn es aus einer Stapeldatei ausgeführt wird - dies erfolgt direkt über die Befehlszeile. Außerdem muss das % - Zeichen in der for -Schleife verdoppelt werden.

Ich habe einige Fälle gesehen, in denen Leute mit find /c Schicke Tricks ausprobieren. Sei sehr vorsichtig mit diesen, da verschiedene Dinge dies brechen können.

Häufige Fehler:

  1. Verwenden Sie find /c /v Und versuchen Sie, etwas zu finden, das niemals in einem Dateinamen enthalten ist, z. B. ::. Gewohnheit. Arbeit. Zuverlässig. Wenn das Konsolenfenster auf Rasterschriftarten eingestellt ist, können Sie diese Zeichenkombination erhalten. Ich kann beispielsweise Zeichen in einen Dateinamen wie :, ? Usw. in ihre Varianten mit voller Breite aufnehmen, die dann in ihr normales ASCII konvertiert werden. Gegenstücke, die dies brechen werden. Wenn Sie eine genaue Zählung benötigen, versuchen Sie dies nicht.

  2. 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 verschiedene Dinge über das Gebietsschema des Benutzers voraus, von denen nicht alle garantiert wahr sind (ich habe einen Kommentar hinterlassen, in dem die Probleme dort aufgeführt sind), und gibt ein Ergebnis zu viel zurück.

Im Allgemeinen möchten Sie find für dir /b Verwenden, wodurch alle Nicht-Dateinamen entfernt werden und Zaunpfostenfehler auf diese Weise vermieden werden.

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, aber Unicode wird dies gemäß meinen Tests nicht auslösen).

28
Joey

Fragen Sie und Sie erhalten: http://technet.Microsoft.com/en-us/library/ee692796.aspx

Zählen der Anzahl der Elemente in einem Ordner

Nun, was weißt du: Es sieht so aus, als würde die Sonne endlich herauskommen, was bedeutet, dass es fast Zeit für uns ist zu gehen. Bevor wir dies jedoch tun, zeigen wir Ihnen einen letzten kleinen Trick mit dem Cmdlet Get-ChildItem. Manchmal müssen Sie nicht wirklich viel über die Dateien in einem Ordner wissen. Alles, was Sie wirklich wissen müssen, ist, wie viele Dateien (falls vorhanden) in einem bestimmten Ordner gefunden werden können. So können Sie schnell die Anzahl der Dateien in einem Ordner zählen:

(Get-ChildItem C:\Scripts).Count

Was machen wir hier? Wir verwenden Get-ChildItem einfach, um eine Sammlung aller im Ordner C:\Scripts gefundenen Elemente zurückzugeben. Da es sich um eine Sammlung handelt, müssen wir lediglich den Wert der Count-Eigenschaft zurückgeben, die die Anzahl der Elemente in der Sammlung angibt. Beachten Sie die Verwendung von Klammern: Wir schließen den Befehl Get-ChildItem in Klammern ein, um sicherzustellen, dass Windows PowerShell zuerst die Auflistung erfasst und erst dann den Wert der Count-Eigenschaft für diese Auflistung wiedergibt.

Natürlich können Sie beim Aufrufen von Get-ChildItem einen Filter einfügen. Möchten Sie wissen, wie viele .PS1-Dateien sich im Ordner C:\Scripts befinden? Alles klar:

(Get-ChildItem C:\Scripts -filter "*.ps1").Count

Zu Ihrer Information .. Ich habe "Powershell Count-Dateien" gegoogelt.

17
Trevoke
dir /a-d | find "File(s)"

Ein Wort der Warnung vor der Verwendung von PowerShell für einfache Dateivorgänge wie diesen - es ist im Vergleich zu cmd.exe unglaublich langsam, insbesondere über Netzwerkverbindungen oder wenn sich Tausende von Dateien im Verzeichnis befinden. Siehe dieser Forumsbeitrag für weitere Informationen.

8
rossnz

dir gibt die Gesamtanzahl der Dateien unten an.

7
lorenzog

Die schnellste Methode, die ich gefunden habe, besteht darin, Folgendes in der PS-Konsole auszuführen.

[System.IO.Directory]::GetFiles($path).Count

dabei ist $ path ein lokaler Pfad oder eine UNC-Freigabe.

7
John Brooks

zählen Sie einfach die Zeilen aus der dir/B-Ausgabe (einschließlich Verzeichnisse):
dir /B | find /c /v "~~~"

für nur Dateien zählen (ohne Verzeichnisse):
dir /A-D /B | find /c /v "~~~"

3
Garcia

Gefunden this im Netz:

dir /a-d | find /c ":" > NUMfiles.###
set /p count=<NUMfiles.###
echo %count%

Ich habe getestet und es scheint zu funktionieren.

2
Kelsey

Nur eine Einschränkung für diejenigen, die möglicherweise die oben genannte PowerShell-Antwort von Trevoke verwenden ( Windows-Eingabeaufforderung: Wie wird die Anzahl aller Dateien im aktuellen Verzeichnis ermittelt? ): Entspricht die Count-Eigenschaft einer von zurückgegebenen Sammlung Get-ChildItem kann 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 weniger als 2 Elemente von Get-ChildItem zurückgegeben werden, ist das Ergebnis skalar und .Count gibt nichts zurück. Um dies zu umgehen, wandeln Sie es explizit in ein Array um, 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 .

2
Heather M.

dir gibt die Anzahl der Dateien und Verzeichnisse unten zurück

0
dyasny

DIr wird natürlich funktionieren

Ohne etwas auf dem Server zu installieren, aber Powershell auf Ihrer Workstation zu haben, können Sie Folgendes tun:

(gwmi -computer theserver -query "select *from cim_datafile where path = '\\'").count

mit diesem Befehl erhalten Sie alle Dateien (einschließlich System und Hidden). Wie bereits erwähnt, können Sie einfach, wenn sich Powershell auf dem Computer befindet

(GCI c:\*.*).count

Beachten Sie, dass Sie alle Dateien und Verzeichnisse zählen, wenn Sie . nicht einschließen. Sie werden keine versteckten und Systemdateien einschließen, die Sie hinzufügen müssen, um sie alle zu zählen

0
Jim B

Wenn ich dies nur einmal brauchte, würde ich nur dir verwenden, andernfalls würde ich in Betracht ziehen, 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 kein DOS, wenn Sie cmd.exe verwenden)

0
Maximus Minimus

Ich glaube, Sie können attrib verwenden, um die Anzahl der Dateien zu ermitteln:

attrib.exe /s /D *.*|find /c /v "" >> filecount.txt

Dadurch wird im aktuellen Verzeichnis eine Datei mit dem Namen filecount.txt mit der Anzahl der Dateien und Ordner im aktuellen Verzeichnis (einschließlich der neu erstellten Datei) erstellt. Sie können das ändern

*.*

zu

<full_path>\*.*

um die Anzahl der Dateien eines bestimmten Verzeichnisses zu ermitteln. 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 es daher, wenn Sie nur Dateien im angegebenen Pfad möchten und keine Dateien in Unterordner aufnehmen 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:

attrib.exe C:\*.* | find /c /v "" >> filecount.txt
0
smoak