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

0

Eu tenho cerca de 20 pastas e todas elas 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 comando copy 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?

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?

    
por user1930402 11.06.2015 / 07:05

2 respostas

1

Se todos os arquivos forem realmente válidos CSV, em seguida, alterando a última linha para fazer um loop pelos 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 entrada e saída de CSV e, portanto, seria capaz de lidar com qualquer esquisitice na estrutura dos arquivos sem corromper a saída.

    
por 11.06.2015 / 07:44
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 único % . Deve ser %%G .

 FOR /D /R %%G in ("*") DO (
  cd %%G 
  COPY *.csv new.csv )
    
por 11.06.2015 / 08:10