
Me gustaría aprender un método de línea de comando nativo para contar líneas de código en cualquier proyecto guardado en Windows.
De esa manera, no importa dónde esté trabajando o con qué idioma/IDE esté trabajando, puedo saber qué tan grande es el proyecto con un comando.
Suponiendo que quiero apuntar a una extensión de archivo específica en el directorio de destino (y todos los subdirectorios), ¿cuál podría ser una forma efectiva de contar de forma recursiva la cantidad de saltos de línea dentro de una carpeta (y subcarpetas) desde la línea de comando de Windows?
Respuesta1
Si todo lo que necesita es el recuento total de líneas desde la línea de comando de Windows
(for /r "c:\somewhere" %a in (*.c) do @type "%a")|find /c /v ""
Respuesta2
¿Cómo puedo contar el número de líneas de archivos en una carpeta de forma recursiva?
Utilice el siguiente archivo por lotes (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%
Notas:
- El número total de líneas se almacena en
%lines%
. - retírela
echo ...
según corresponda para un funcionamiento silencioso.
Uso:
countlines filename_expression
Ejemplo:
countlines *.java
generará lo siguiente:
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
Otras lecturas
- Un índice AZ de la línea de comando CMD de Windows- Una excelente referencia para todo lo relacionado con la línea cmd de Windows.
- directorio- Mostrar una lista de archivos y subcarpetas.
- encontrar- Busque una cadena de texto en un archivo y muestre todas las líneas donde se encuentra.
- para /f- Comando de bucle contra los resultados de otro comando.
Respuesta3
Esto contará todas las líneas ya que Powershell define líneas en MyTargetPath
Get-Content (Get-ChildItem -Recurse -Path MyTargetPAth -file).FullName | measure -line
Simplemente configure MyTargetPath primero.
Respuesta4
Si trabaja con archivos muy grandes, obtendrá una ganancia de rendimiento considerable si utiliza la redirección de archivos en lugar de usar PIPE. Probando con un archivo de 437 MB que tenía 8.895.540 líneas. La conexión al comando de búsqueda tomó 14,6 segundos. Usando la redirección solo tomó 5,4 segundos. Si cuenta archivos más pequeños, la diferencia, por supuesto, sería insignificante.
@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%