Como localizar a contagem de linhas presentes em um arquivo usando script em lote

3

Eu quero contar o número de linhas em um arquivo usando lote.

Eu passei por este , mas não consegui Não entendo como eu sou um iniciante. Eu escrevi meu próprio código com conhecimento básico.

@echo off
set "file=abc.csv"
set /a x=0
for /f "usebackq delims=" %%p in ("%file%") do (
  echo %x%
  pause>nul
  set /a x=%x%+1
)

Quando executo o código acima, estou obtendo 0 como saída. Alguém pode me ajudar a resolver o erro?

    
por learner1 28.04.2016 / 14:14

2 respostas

2

Eu quero contar o número de linhas em um arquivo usando lote

Solução específica

De uma linha de comando:

F:\test>for /f "usebackq" %b in ('type abc.csv ^| find "" /v /c') do @echo line count is %b
line count is 1

De um arquivo de lote (countlines.cmd):

@echo off
Setlocal EnableDelayedExpansion
  for /f "usebackq" %%b in ('type abc.csv ^| find "" /v /c') do (
    echo line count is %%b
    )
  )

Exemplo:

F:\test>countlines
line count is 1
F:\test>

Solução flexível

Use o seguinte arquivo de 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% .
  • O arquivo em lote suporta curingas.
  • Comandos Tweak echo ... conforme apropriado.

Uso:

countlines filename_expression

Exemplo:

F:\test>countlines *.csv
processing file F:\test\abc.csv
line count is 1
processing file F:\test\def.csv
line count is 1
total lines is 2

Leitura Adicional

por 28.04.2016 / 14:57
1

Uma maneira simples de contar o número de linhas em um arquivo em um sistema Microsoft Windows é usando o seguinte comando:

find /v /c "" somefile.txt

A opção /c conta o número de linhas, enquanto a opção /v exibe todas as linhas que NÃO contêm a string especificada. Como a string nula, ou seja, "", é tratada como nunca correspondendo, você deve ver o número de linhas no arquivo exibido - veja o Truque de linha de comando idiota: Contando o número de linhas no artigo stdin no blog de desenvolvedores Microsoft de Raymond Chen, The Old New Thing para uma explicação de por que isso funciona e como um bug no mais antigo MS- A versão DOS do comando find tornou-se um recurso que permanece até hoje. O sistema operacional MS-DOS era um sistema operacional para PCs antigos fornecido pela Microsoft muito antes de a empresa criar o Microsoft Windows.

    
por 28.04.2016 / 15:14