Объединение двух текстовых файлов в один файл CSV - PullRequest
2 голосов
/ 12 января 2011

Я работаю с пакетной командой Windows, чтобы создать список путей к файлам и именам файлов (без ext) для обработки и архивирования. Мне нужно сделать CSV-файл, который будет содержать путь к файлу и имя файла.

Мне удалось использовать команду «DIR / A-D-S / D / S» для вывода списка с путями к файлам, который является filelistA.txt. Затем я использую vbscript (makelistB.vbs), чтобы удалить путь и расширение и сохранить его как filelistB.txt. Мне нужно объединить два файла строка за строкой, поместив между ними разделитель запятой, и вот где мне нужен какой-то VBscript.

filelistA.txt выглядит так:
C: \ Data \ Clients \ COLD \ AC3060P.txt
C: \ Data \ Clients \ COLD \ AC3090P.txt
C: \ Data \ Clients \ COLD \ AC3100P.txt
C: \ Data \ Clients \ COLD \ AC3150P.txt
C: \ Data \ Clients \ COLD \ AC3200P.txt
C: \ Data \ Clients \ COLD \ AC3600P.txt
C: \ Data \ Clients \ COLD \ AC3652P.txt
C: \ Data \ Clients \ COLD \ AC5715P.txt
C: \ Data \ Clients \ COLD \ AC5720P.txt
C: \ Data \ Clients \ COLD \ AC5725P.txt

filelistB.txt выглядит так:
AC3060P
AC3090P
AC3100P
AC3150P
AC3200P
AC3600P
AC3652P
AC5715P
AC5720P
AC5725P

Я хочу создать FileListCSV.txt, который выглядит следующим образом:
C: \ Data \ Clients \ FWBT \ COLD \ AC3060P.txt, AC3060P
C: \ Data \ Clients \ FWBT \ COLD \ AC3090P.txt, AC3090P
C: \ Data \ Clients \ FWBT \ COLD \ AC3100P.txt, AC3100P
C: \ Data \ Clients \ FWBT \ COLD \ AC3150P.txt, AC3150P
C: \ Data \ Clients \ FWBT \ COLD \ AC3200P.txt, AC3200P
C: \ Data \ Clients \ FWBT \ COLD \ AC3600P.txt, AC3600P
C: \ Data \ Clients \ FWBT \ COLD \ AC3652P.txt, AC3652P
C: \ Data \ Clients \ FWBT \ COLD \ AC5715P.txt, AC5715P
C: \ Data \ Clients \ FWBT \ COLD \ AC5720P.txt, AC5720P
C: \ Data \ Clients \ FWBT \ COLD \ AC5725P.txt, AC5725P

Я также открыт для использования SED для окон, если это может сделать все это за один выстрел. Тем не менее, я полагаю, что это должно быть сделано в VBscript за несколько минут.

Ответы [ 3 ]

3 голосов
/ 12 января 2011

Этот пакетный файл Windows будет делать то, что вы хотите, без необходимости промежуточных файлов.

@ECHO OFF

FOR %%i IN (*.txt) DO ECHO %%~fi,%%~ni

Вывод этого пакета в текстовый файл можно получить, перенаправив вывод следующим образом:

MyBatch.cmd>>Output.txt
0 голосов
/ 14 июня 2017

Это можно сделать довольно быстро в EasyMorph, используя преобразование «Добавить» в режиме «Добавить столбцы».

0 голосов
/ 12 января 2011

Это может быть задание для оболочки SQLite.

C:\Temp> sqlite3.exe
create table paths(path text);
create table filenames(fname text);
.import fileListA.txt paths
.import fileListB.txt filenames
.separator ,
.output FileListCSV.txt
select * from paths p join filenames f on f.rowid = p.rowid;
.q

Оболочка SQLite - это отдельный исполняемый файл, который либо создает постоянную базу данных SQLite в виде файла, либо создает базу данных в памяти.(когда, как здесь, без каких-либо аргументов в командной строке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...