Aplicar função ao conteúdo de um arquivo CSV

2

Atualmente, estou trabalhando em um arquivo de lote que está me atrapalhando. Eu tenho um arquivo .CSV gerado que contém um cabeçalho e duas colunas. O arquivo também é codificado como ASCII (descobrindo que essa foi uma revelação real!) A segunda coluna contém uma lista de arquivos de texto que eu preciso ler e aplicar uma função a cada uma das entradas contidas neles.

Eu pensei em usar copiar ou digitar > > para mesclar os arquivos em um único que seria mais fácil de analisar, mas estou tendo dificuldade em ler o conteúdo do csv e usar o conteúdo ...

Até agora eu estou usando

for /f "skip=1 usebackq tokens=1-2 delims=," %%a in ("%temp%\list.txt") do echo %%b>>"%temp%\newfile.txt"

mas não está funcionando ... (tudo que recebo é um arquivo vazio) e não consigo descobrir o que fazer a seguir para aplicar uma função a todos os arquivos listados para que eu possa processar o conteúdo combinado deles. Eu tenho lutado com isso por dois dias e estou começando a ficar irritado com o que parece simples, mas eu não consigo descobrir isso.

Aqui está o conteúdo do meu arquivo CSV

Client number,Client name
44456,James Bond
33356,Doctor Evil

E eu tenho uma pasta contendo arquivos chamados James Bond.txt, Mister Rogers.txt, Chief Bob, txt e Doctor Evil.txt, que contêm as informações do cliente. Então, eu quero juntar apenas os nomes necessários conforme determinado pelo arquivo CSV e imprimir a lista completa de tudo de uma só vez.

Esperando que isso esclareça as coisas (eu sei, é difícil de explicar)

EDIT Eu tentei o pedaço de código proposto e ele ainda não funciona ... Tudo o que eu recebo é um arquivo vazio ... mas por algum motivo eu acho que parece promissor.

    
por Flaver-D 25.05.2017 / 21:39

1 resposta

1

Se as colunas Client name tiverem nomes iguais de arquivos na pasta com extensão .txt , o seguinte lote deverá ser feito.

:: Q:\TEST17-05\DEMO\SU_1212933.cmd
@Echo off
For %%A in (".\folder") Do Set "folder=%%~fA"
( for /f "skip=1 usebackq tokens=1* delims=," %%a in (
   ".\list.csv"
  ) do If Exist "%folder%\%%b.txt" Type "%folder%\%%b.txt"  
) >".\Report.txt"

Para demonstrar isso é o meu ambiente de teste

> tree . /F
Q:\TEST17-05\DEMO
│   SU_1212933.cmd
│   list.csv
│   Report.txt
│
└───folder
        James Bond.txt
        Doctor Evil.txt

o conteúdo dos dois arquivos txt em folder

> type folder\*.txt

folder\James Bond.txt

#################################################
## this is file "James Bond.txt" in folder     ##
#################################################

folder\Doctor Evil.txt

#################################################
## this is file "Doctor Evil.txt" in folder    ##
#################################################

Depois de executar o lote, o arquivo report.txt contém:

> type Report.txt
#################################################
## this is file "James Bond.txt" in folder     ##
#################################################
#################################################
## this is file "Doctor Evil.txt" in folder    ##
#################################################
    
por 25.05.2017 / 23:54