Tenho um diretório com vários arquivos csv. Gostaria de retornar a contagem de linhas de cada arquivo, a data de modificação de cada arquivo e a string na primeira coluna após a linha do cabeçalho usando scripts em lote na janela 10. Como eu faria a saída para um arquivo de texto?
Exemplo
File 1: String 100 lines 1/12/2019
File 2: String 100 lines 1/10/2019
File 3: String 200 lines 1/12/2019
Responder1
Não vou fazer o script para você, mas vou lhe dar os métodos para o que você deseja. Primeiro vamos dividir a questão em duas partes:
1.- Obtenha a contagem de linhas em Dir
for /f "usebackq tokens=1 delims=," %%a in ("you_file_path") do set /a count+=1
e para obter a primeira linha após o cabeçalho você faria isso, mas com uma quebra de loop
for /f "usebackq tokens=1 delims=," %%a in ("you_file_path") do (
set /a count+=1 && if count==2 (first_row=%%a && goto next)
)
:next
2.- Data Modificada
for /f "tokens=1,2 delims= " %%a in (
'dir "FullDirPath" ^| find /i "File_name"'
) do set ArchDate=%%a
Agora cabe a você colar tudo isso e criar um script, você precisaria fazer um loop em cada arquivo usando o código acima e no final de cada loop echo "%first_row%" "%archdate%" "%count%"
ouecho "%first_row%" "%archdate%" "%count%" > file.txt
Você pode testar esses métodos, cmd
mas para usar variáveis no terminal você precisa substituir %%a
por %a
. Em um script em lote é %%a
a sintaxe correta, mas no terminal %a
é a sintaxe correta.
Saúde.