Batch File: Não é possível concatenar um valor de contador de loop para uma string constante

0

Isto está em continuação com a questão aqui. Script em lote: concatenando vários arquivos em várias pastas em um único arquivo

Eu tenho 20 arquivos com o nome 'new.csv' em 20 pastas no mesmo diretório pai. Eu quero concatenar todos eles em um arquivo. Então, quero fazer isso em duas etapas.

  1. Estou usando o XCOPY para copiar cada new.csv de cada pasta para new1, new2, new3 etc. na pasta pai. Se eu puder fazer isso, na minha pasta pai, eu tenho 20 csvs, new1, new2..new20.csv.

  2. Então, posso fazer apenas um copy new*.csv final.csv . Então, este é o código que eu escrevi para fazer as cópias de cada um desses new.csv de cada pasta na pasta pai.

    setlocal EnableDelayedExpansion
    set /a i=0
    FOR /D /R %%G in ("*") DO (
    
    cd %%G 
    set  /a i=i+1
    XCOPY new.csv ..\new%!i!%.csv )
    

O problema está em criar um novo arquivo. Eu quero criar 20 arquivos com nomes, new1.csv, new2.csv, new3.csv ... new20.csv. O valor do contador está sendo incrementado, mas não posso anexá-lo a 'novo'. Você poderia por favor ajudar?

    
por user1930402 11.06.2015 / 08:15

2 respostas

0

Obrigado! Estou respondendo a mim mesmo, com o que funcionou para mim. Eu substituí a última linha assim.

 XCOPY new.csv ..\new_!i!.csv 
    
por 11.06.2015 / 08:20
0

Se você quiser os caminhos completos para os CSVs individuais listados no CSV consolidado, use este:

for /r %f in (*.csv) do @echo "%f" >> New.csv && echo. >> New.csv && type "%f" >> New.csv && echo. >> New.csv && echo --- >> New.csv

Se você quiser apenas o conteúdo do CSV, use este:

for /r %f in (*.csv) do @type "%f" >> New.csv && echo. >> New.csv

echo. adiciona uma nova linha ao arquivo e pode ser removido se não for necessário para encurtar ainda mais o comando.

Esses comandos precisam ser digitados no diretório pai. Se você os estiver usando em um arquivo de lote, lembre-se de dobrar cada sinal%.

    
por 11.06.2015 / 09:23