В настоящее время я работаю над пакетным файлом, который доставляет мне много хлопот. У меня есть сгенерированный файл .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-файле, а затем распечатать полный список всего за один раз.
Надеюсь, это прояснит ситуацию (я знаю, это трудно объяснить).
EDIT Я попробовал предложенный фрагмент кода, но он все равно не работает... Все, что я получаю, это пустой файл... но по какой-то причине мне кажется, что это выглядит многообещающе.
решение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 ##
#################################################