将两个文本文件合并为一个CSV文件

时间:2011-01-12 18:39:50

标签: text file csv vbscript batch-file

我正在使用windows batch命令创建文件路径和文件名列表(没有ext)以进行处理和存档。我需要创建一个包含文件路径和文件名的CSV文件。

我能够使用'DIR / A-D-S / D / S'命令输出带有文件路径的列表,即filelistA.txt。然后我使用vbscript(makelistB.vbs)去除路径和扩展名并将其保存为filelistB.txt。我需要将两行文件合并为行,将逗号分隔符放在其间,这就是我需要某种VBscript的地方。

filelistA.txt看起来像:
C:\ DATA \客户\冷\ AC3060P.txt
C:\ DATA \客户\冷\ AC3090P.txt
C:\ DATA \客户\冷\ AC3100P.txt
C:\ DATA \客户\冷\ AC3150P.txt
C:\ DATA \客户\冷\ AC3200P.txt
C:\ DATA \客户\冷\ AC3600P.txt
C:\ DATA \客户\冷\ AC3652P.txt
C:\ DATA \客户\冷\ AC5715P.txt
C:\ DATA \客户\冷\ AC5720P.txt
C:\数据\客户\ COLD \ AC5725P.txt

filelistB.txt看起来像:
AC3060P
AC3090P
AC3100P
AC3150P
AC3200P
AC3600P
AC3652P
AC5715P
AC5720P
AC5725P

我想制作FileListCSV.txt,如下所示:
C:\ DATA \ CLIENTS \ FWBT \冷\ AC3060P.txt,AC3060P
C:\ DATA \ CLIENTS \ FWBT \冷\ AC3090P.txt,AC3090P
C:\ DATA \ CLIENTS \ FWBT \冷\ AC3100P.txt,AC3100P
C:\ DATA \ CLIENTS \ FWBT \冷\ AC3150P.txt,AC3150P
C:\ DATA \ CLIENTS \ FWBT \冷\ AC3200P.txt,AC3200P
C:\ DATA \ CLIENTS \ FWBT \冷\ AC3600P.txt,AC3600P
C:\ DATA \ CLIENTS \ FWBT \冷\ AC3652P.txt,AC3652P
C:\ DATA \ CLIENTS \ FWBT \冷\ AC5715P.txt,AC5715P
C:\ DATA \ CLIENTS \ FWBT \冷\ AC5720P.txt,AC5720P
C:\数据\客户\ FWBT \ COLD \ AC5725P.txt,AC5725P

如果可以一次性完成所有这些操作,我也愿意将SED用于Windows。但是,我认为这应该是几分钟内可以在VBscript中掀起的东西。

3 个答案:

答案 0 :(得分:3)

此Windows批处理文件将执行您想要的操作,而无需中间文件。

@ECHO OFF

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

您可以通过重定向输出来将此批次的输出转换为文本文件:

MyBatch.cmd>>Output.txt

答案 1 :(得分:0)

这可能是SQLite shell的一项工作。

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 shell是一个可执行文件,它将以文件的形式创建一个持久的SQLite数据库,或者在内存中创建一个数据库(就像这里一样,在命令行中没有任何参数)。

答案 2 :(得分:0)

这可以在EasyMorph中使用Append transformation in" Append columns"模式。