2

В настоящее время я работаю над командным файлом, который доставляет мне трудности. У меня есть сгенерированный.CSV-файл, который содержит заголовок и два столбца. Файл также закодирован как ASCII (обнаружение, что это было настоящим откровением!) Второй столбец содержит список текстовых файлов, которые мне нужно прочитать и применить функцию к каждой записи, содержащейся в них.

Я думал об использовании copy или type >>, чтобы объединить файлы в один, который было бы легче проанализировать, но мне трудно читать содержимое csv и использовать содержимое ...

Пока я пользуюсь

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

но это не работает ...(все, что я получаю, это пустой файл), и я не могу понять, что делать дальше, чтобы применить функцию ко всем перечисленным файлам, чтобы затем я мог обработать их объединенное содержимое. Я боролся с этим в течение двух дней, и меня начинает раздражать то, что кажется простым, но я не могу понять это.

Вот содержимое моего CSV-файла

Номер клиента, имя клиента
44456, Джеймс Бонд
33356, Доктор Зло

И у меня есть папка, содержащая файлы с именами James Bond.txt, Mister Rogers.txt, Chief Bob, txt и Doctor Evil.txt, которые содержат информацию о клиенте. Итак, я хочу, чтобы собрать только необходимые имена, как диктует файл CSV, а затем распечатать полный список всего за один раз.

Надеюсь, что это проясняет вещи (я знаю, это трудно объяснить)

РЕДАКТИРОВАТЬ Я попробовал предложенный кусок кода, и он все еще не работает ...Все, что я получаю, - пустой файл ... но по некоторым причинам я думаю, что это выглядит многообещающим.

1 ответ1

1

При условии, что в столбцах Client name есть файлы с одинаковыми именами в папке с расширением .txt , следующий пакет должен сделать.

:: 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"

Чтобы продемонстрировать это моя тестовая среда

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

содержимое двух текстовых файлов в 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    ##
#################################################

После запуска пакета файл report.txt содержит:

> type Report.txt
#################################################
## this is file "James Bond.txt" in folder     ##
#################################################
#################################################
## this is file "Doctor Evil.txt" in folder    ##
#################################################

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .