Exporte as três primeiras linhas de um .csv para outro .csv usando comandos em lote

0

Eu tenho um arquivo .csv com várias linhas, mas só quero as três primeiras linhas e nenhuma das outras. Como posso usar um arquivo em lotes para exportar as 3 primeiras linhas do meu arquivo .csv para outro arquivo .csv? Vi algumas perguntas semelhantes com soluções que referenciavam arquivos de texto, mas minhas tentativas de corrigir o arquivo em lote não foram tão bem-sucedidas. Alguém tem alguma sugestão aqui?

    
por batchnoober 13.03.2013 / 23:01

1 resposta

1

Usando este post da pilha estouro, (nomeado head.bat pelo autor) pode ser alterado para fazer exatamente o que você está pedindo.

head.bat 3 foo.csv

Isso levará as primeiras n linhas de foo.csv e criará um arquivo chamado bar.csv que contém apenas essas três linhas. Você pode alimentar o nome do arquivo e contar ou simplesmente chamar isso do seu arquivo de lote. Isso pode ser usado com o comando for e variáveis adicionais para processar vários arquivos e gerar vários arquivos.

    @echo off

if [%1] == [] goto usage
if [%2] == [] goto usage

call :print_head %1 %2
goto :eof

REM
REM print_head
REM Prints the first non-blank %1 lines in the file %2.
REM
:print_head
setlocal EnableDelayedExpansion
set /a counter=0

for /f ^"usebackq^ eol^=^

^ delims^=^" %%a in (%2) do (
        if "!counter!"=="%1" goto :eof
        @echo>>bar.csv %%a
        set /a counter+=1
)

goto :eof

:usage
echo Usage: head.bat COUNT FILENAME
    
por 14.03.2013 / 00:38