Wie kann ich die Zeilenumbrüche in einem Ordner rekursiv zählen?

Wie kann ich die Zeilenumbrüche in einem Ordner rekursiv zählen?

Ich möchte eine native Befehlszeilenmethode zum Zählen von Codezeilen in jedem unter Windows gespeicherten Projekt erlernen.

Auf diese Weise kann ich mit einem Befehl ermitteln, wie groß das Projekt ist, unabhängig davon, wo ich arbeite oder mit welcher Sprache/IDE ich arbeite.

Angenommen, ich möchte auf eine bestimmte Dateierweiterung im Zielverzeichnis (und allen Unterverzeichnissen) abzielen. Was wäre eine effektive Möglichkeit, die Anzahl der Zeilenumbrüche innerhalb eines Ordners (und Unterordnern) über die Windows-Befehlszeile rekursiv zu zählen?

Antwort1

Wenn Sie lediglich die Gesamtzahl der Zeilen aus der Windows-Befehlszeile benötigen

(for /r "c:\somewhere" %a in (*.c) do @type "%a")|find /c /v ""

Antwort2

Wie kann ich die Anzahl der Zeilen in Dateien in einem Ordner rekursiv zählen?

Verwenden Sie die folgende Batchdatei (countlines.cmd)

@echo off
Setlocal EnableDelayedExpansion
for /f "usebackq" %%a in (`dir /b /s %1`)  do (
  echo processing file %%a
  for /f "usebackq" %%b in (`type %%a ^| find "" /v /c`) do (
    echo line count is %%b
    set /a lines += %%b
    )
  )
echo total lines is %lines%

Anmerkungen:

  • Die Gesamtzahl der Zeilen wird in gespeichert %lines%.
  • echo ...Für einen geräuscharmen Betrieb ggf. entfernen .

Verwendung:

countlines filename_expression

Beispiel:

countlines *.java

gibt Folgendes aus:

processing file F:\projects\test\foo.java
line count is 10
processing file F:\projects\test\test.java
line count is 106
processing file F:\projects\test\Wheel4Applet.java
line count is 350
total lines is 466

Weitere Informationen

  • Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
  • dir- Zeigt eine Liste der Dateien und Unterordner an.
  • finden- Suchen Sie in einer Datei nach einer Textzeichenfolge und zeigen Sie alle Zeilen an, in denen sie gefunden wird.
  • für /f- Befehl mit den Ergebnissen eines anderen Befehls wiederholen.

Antwort3

Dadurch werden alle Zeilen gezählt, da Powershell Zeilen in MyTargetPath definiert

Get-Content (Get-ChildItem -Recurse -Path MyTargetPAth -file).FullName | measure -line

Richten Sie einfach zuerst MyTargetPath ein.

Antwort4

Wenn Sie mit sehr großen Dateien arbeiten, ist die Leistung deutlich besser, wenn Sie die Dateiumleitung statt PIPE verwenden. Beim Testen mit einer 437 MB großen Datei mit 8.895.540 Zeilen dauerte das Weiterleiten an den Find-Befehl 14,6 Sekunden. Mit der Umleitung dauerte es nur 5,4 Sekunden. Wenn Sie kleinere Dateien zählen, ist der Unterschied natürlich vernachlässigbar.

@echo off
set "lines=0"
for /f "usebackq" %%a in (`dir /b /s %1`)  do (
  echo processing file %%a
  for /f %%b in ('find /V /C "" ^<"%%a"') do (
    echo line count is %%b
    set /a lines+=%%b
    )
  )
echo total lines is %lines%

verwandte Informationen