
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%