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

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

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

Pensei em usar copy ou type >> 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 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 o 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 seu conteúdo combinado. Estou lutando com isso há dois dias e estou começando a ficar irritado com o que parece simples, mas não consigo entender.

Aqui está o conteúdo do meu arquivo CSV

Número do cliente,Nome do cliente
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 reunir apenas os nomes necessários conforme ditado pelo arquivo CSV e depois imprimir a lista completa de tudo de uma vez.

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

EDITAR Tentei o trecho de código proposto e ainda não funciona... Tudo que consigo é um arquivo vazio... mas por algum motivo acho que parece promissor.

Responder1

Desde que as Client namecolunas tenham arquivos com nomes iguais na pasta com .txtextensão, o lote a seguir deve servir.

:: Q:\TEST\2017-05\25\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 este é o meu ambiente de teste

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

o conteúdo dos dois arquivos txt emfolder

> 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    ##
#################################################

informação relacionada