
Gostaria de aprender um método nativo de linha de comando para contar linhas de código em qualquer projeto salvo no Windows.
Dessa forma, não importa onde estou trabalhando ou com qual linguagem/IDE estou trabalhando, saber o tamanho do projeto pode ser alcançado com um comando.
Supondo que eu queira direcionar uma extensão de arquivo específica no diretório de destino (e em todos os subdiretórios), qual poderia ser uma maneira eficaz de contar recursivamente o número de quebras de linha em uma pasta (e subpastas) na linha de comando do Windows?
Responder1
Se tudo que você precisa é a contagem total de linhas da linha de comando do Windows
(for /r "c:\somewhere" %a in (*.c) do @type "%a")|find /c /v ""
Responder2
Como posso contar recursivamente o número de linhas em arquivos em uma pasta?
Use o seguinte arquivo em lote (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:
- O número total de linhas é armazenado em
%lines%
. - remova
echo ...
conforme apropriado para um funcionamento silencioso.
Uso:
countlines filename_expression
Exemplo:
countlines *.java
produzirá o seguinte:
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
Leitura adicional
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
- diretório- Exibir uma lista de arquivos e subpastas.
- encontrar- Procure uma string de texto em um arquivo e exiba todas as linhas onde ela for encontrada.
- para /f- Comando de loop em relação aos resultados de outro comando.
Responder3
Isso contará todas as linhas conforme o Powershell define linhas em MyTargetPath
Get-Content (Get-ChildItem -Recurse -Path MyTargetPAth -file).FullName | measure -line
Basta configurar MyTargetPath primeiro.
Responder4
Se você estiver lidando com arquivos muito grandes, haverá um ganho considerável de desempenho se você usar o redirecionamento de arquivos em vez de usar o PIPE. Testando com um arquivo de 437 MB com 8.895.540 linhas. A conexão com o comando find levou 14,6 segundos. Usando o redirecionamento, levou apenas 5,4 segundos. Se você estiver contando arquivos menores, a diferença seria 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%