Script em lote: concatenando vários arquivos em várias pastas em um arquivo

0

Eu tenho cerca de 20 pastas e todos eles têm cerca de 100 arquivos csv cada. Eu quero combinar todos eles juntos em um arquivo. Como devo fazer isso? Eu sei sobre o copycomando para combinar arquivos de uma pasta. Se eu fizer isso, recebo 20 arquivos em 20 pastas. Para combiná-los, como vou atravessar em cada pasta e fazer?

Eu estou tentando escrever um script em lote como este:

FOR /D /R %G in ("*") DO (
cd %G 
COPY *.csv new.csv )

Mas, não está funcionando corretamente. Alguma sugestão?

pvarma
fonte

Respostas:

1

Se todos os arquivos forem realmente válidos CSV, em seguida, alterando a última linha para executar um loop nos arquivos na pasta atual usando a variável% H, altere a cópia para:

TYPE %H >>new.csv

Deve funcionar (não totalmente testado estou com medo).

No entanto, uma abordagem melhor seria usar o PowerShell, pois ele possui cmdlets para manipular a entrada e saída de CSV e, portanto, seria capaz de lidar com qualquer esquisitice na estrutura dos arquivos sem corromper a saída.

Julian Knight
fonte
Obrigado. Eu escrevi um loop e fiz o trabalho ... vou tentar a sua resposta também.
pvarma
0

Eu tenho a primeira parte trabalhando, ou seja, todos os arquivos csv em cada subpastas são combinados em um arquivo csv cada. Então, eu tenho 20 arquivos csv. O erro foi o single %. Deveria ser %%G.

 FOR /D /R %%G in ("*") DO (
  cd %%G 
  COPY *.csv new.csv )
pvarma
fonte