Wie kann man unter Windows alle Codezeilen in einem Verzeichnis rekursiv zählen?


21

Auf einem Windows 7-Computer möchte ich auf schnelle Weise die Anzahl der Zeilen in allen Dateien in einer Verzeichnisstruktur für Dateien mit einer bestimmten Erweiterung ermitteln. Gibt es einen guten Weg, dies zu tun?


1
[Kennen Sie ein ähnliches Programm für wc (Unix Word Count Command) unter Windows?] [1] [1]: stackoverflow.com/questions/247234/…

Ich kenne mich mit wc aus und wünschte, es gäbe eine W7-Entsprechung.
Federbrecher

@ (Federbrecher) Da ist. Das gesamte Linux / Unix-Befehlszeilen-Toolkit ist für ALLE Windows-basierten Plattformen verfügbar. gnuwin32.sourceforge.net
shawty

Antworten:


41

Powershell ist eine Option.

PS D:\Scratch\maweeras\superuser> dir -Recurse *.txt | Get-Content | Measure-Object -Line

Lines Words Characters Property
----- ----- ---------- --------
  168

1
Bitte legen Sie Beweise und alternative Lösungen vor, wenn die oben genannten falsch sind. Ich werde dann meine Antwort löschen / korrigieren.
Maweeras

2
Ihre Antwort ist zwar hilfreich und wird vom OP akzeptiert, aber die Frage des OP wird nicht richtig beantwortet. Das Problem liegt im ersten Befehl Ihrer Lösung. Es dir -Recurse *.txtwerden nur Verzeichnisse verarbeitet, deren Namen übereinstimmen *.txt, und alle Dateien ausgegeben, die in diesen Verzeichnissen und deren Unterbäumen gefunden werden. Das OP wollte aber alle Verzeichnisse bearbeiten und dabei nur die passenden Dateien ausgeben *.txt. Dazu würden Sie verwenden dir -Recurse -Include *.txt.
Cinnam

1
Dies ist nicht korrekt. Die Windows-Hilfe unter Get-ChildItem( direin Alias ​​von) gibt an, Get-ChildItem –Path "*.txt" -Recursedass nur "alle TXT-Dateien im aktuellen Verzeichnis und in den zugehörigen Unterverzeichnissen" abgerufen werden müssen. Link: technet.microsoft.com/library/hh849800.aspx
Andrew Leap

@ AndrewLeap Ich habe es gerade noch einmal getestet - auf Win8 mit PowerShell 4.0 funktioniert es so, wie Sie es sagen. Unter Win7 mit PowerShell 2.0 tritt jedoch das von mir beschriebene Problem auf. dir -Recurse -Include *.txtscheint bei beiden Versionen die gewünschten Ergebnisse zu erzielen.
Cinnam

Wie würde jemand dies verwenden, um BEIDE * .txt UND * .java (kombinierte Summe) einzuchecken?
Jeremy Moritz

3

Um die Antwort von maweeras weiter oben zu erweitern (es tut uns leid, dass nicht genügend Wiederholungen zum Kommentieren vorhanden sind), können Sie nach mehreren Dateierweiterungen suchen, indem Sie ein durch Kommas getrenntes Array an -Include übergeben.

Also zum Beispiel:

dir -Recurse -Include *.ts,*.tsx -Exclude *node_modules* | Get-Content | Measure-Object -Line


2

Folgendes funktioniert in cmd:

for %f in (*.TXT) do find /v /c "" "%f"

Oder in einem [.bat]:

for %%f in (*.TXT) do find /v /c "" "%%f"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.