Como faço para contar ocorrências de ,
em um arquivo CSV?
Use o seguinte arquivo em lotes (CountCommas.cmd):
@echo off
setlocal EnableDelayedExpansion
set _comma=,
for /f "usebackq" %%a in ('dir /b /s *.csv') do (
set _file=%%a
set count=0
for /f "usebackq tokens=*" %%b in ('type !_file!') do (
set _line=%%b
call :count
)
)
goto :done
:count
if !_line:~0^,1! equ !_comma! (
set /a count+=1
)
if "!_line:~1!" neq "" (
set _line=!_line:~1!
goto :count
)
echo file !_file! contains !count! commas
if !count! neq 19 (
echo error
rem handle error here
)
)
:done
endlocal
Notas:
- Substitua
rem handle error here
pelo seu código de tratamento de erros
Exemplo de uso:
> type bad.csv
STRING1,STRING3,2017-01-12 10:11:09,53.779093,-7.494274,
> type good.csv
STRING1,STRING2,2017-01-20 17:34:08,53.808536,-7.789231,19.5,3,0,STRING3,2017-01-20 17:34:19,2,0,7.9,2,0,1,0,0,0,0
> CountCommas
file F:\test\bad.csv contains 5 commas
error
file F:\test\good.csv contains 19 commas
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- dir - Exibe uma lista de arquivos e subpastas.
- para / f - Comando Loop contra os resultados de outro comando.
- if - Realize condicionalmente um comando.
- definir - Exibir, definir ou remover variáveis de ambiente do CMD. As alterações feitas com o SET permanecerão apenas pela duração da sessão atual do CMD.
- variáveis - Extrai parte de uma variável (substring).