如果可能的话,我想将两个CSV文件的数据与批处理脚本合并。
问题在于,虽然它们包含类似的数据,但它不是有序的,需要合并/合并。我想要这个文件的最后一栏
Isher,Dhupar,7,7M5,7ae/Ma1 Mr K F TREASURE
Saarah,Hassan,7,7M5,7ae/Ma1 Mr K F TREASURE
Zenzele,Kabara-Clarke,7,7M5,7ae/Ma1 Mr K F TREASURE
将被添加到此文件的下一行,它是合适的人。
Abed,Abbas,P,J3XXXXXXXXXXX,7,NULL,abedabbas,****,A
Muzefa,Abbas,P,A3XXXXXXXXXXX,8,NULL,muzefaabbas,****,A
Taiba,Abbas,P,A3XXXXXXXXXXX,11,NULL,taibaabbas,****,A
即。它将进行以下过渡:
Abed,Abbas,P,J3XXXXXXXXXXX,7,NULL,abedabbas,****,A,7ae/Ma1 Mr K F TREASURE
Muzefa,Abbas,P,A3XXXXXXXXXXX,8,NULL,muzefaabbas,****,A,8fj/Ma1 Mrs C H CLARK
Taiba,Abbas,P,A3XXXXXXXXXXX,11,NULL,taibaabbas,****,A,11ae/Ma1 Mr K F TREASURE
我设法构建了一个批处理文件,该文件读取第二个CSV文件中的前两个字段并存储到一个数组中,但这些都是:
@echo off
setlocal enableextensions enabledelayedexpansion
set n=0
for /f "tokens=1,2 delims=," %%a in (Database.csv) do (
set names[!n!]=%%a,%%b
set /a n+=1
)
set /a n-=1
for /l %%f in (0,1,%n%) do (
echo !names[%%f]!
)
endlocal
提前致谢!
答案 0 :(得分:0)
哇!您应该意识到示例数据通常用于澄清问题,因此读者可以轻松地按照查看示例的问题描述进行操作。但是,在这种情况下,您的示例只是从描述中分散了我们,因为没有一个"正确的人"匹配数据吧!无论如何,这是一个解决方案(当我猜正确的数据应该如何)时:
@echo off
setlocal EnableDelayedExpansion
rem Load the field 5 from file1.txt in an array that uses the first two fields as index
for /F "tokens=1,2,5 delims=," %%a in (file1.txt) do set "field5[%%a,%%b]=%%c"
rem Process the file2.txt and insert the field5 of the matching data
for /F "tokens=1,2* delims=," %%a in (file2.txt) do echo %%a,%%b,%%c,!field5[%%a,%%b]!
这样,如果这是第一个文件:
Abed,Abbas,7,7M5,7ae/Ma1 Mr K F TREASURE
Muzefa,Abbas,7,7M5,8fj/Ma1 Mrs C H CLARK
Taiba,Abbas,7,7M5,11ae/Ma1 Mr K F TREASURE
然后这是输出:
Abed,Abbas,P,J3XXXXXXXXXXX,7,NULL,abedabbas,****,A,7ae/Ma1 Mr K F TREASURE
Muzefa,Abbas,P,A3XXXXXXXXXXX,8,NULL,muzefaabbas,****,A,8fj/Ma1 Mrs C H CLARK
Taiba,Abbas,P,A3XXXXXXXXXXX,11,NULL,taibaabbas,****,A,11ae/Ma1 Mr K F TREASURE
答案 1 :(得分:0)
让我重新解释一下我的解决方案:
将所有名称存储在以下文件的数组中:
阿贝德,阿巴斯,P,J3XXXXXXXXXXX,7,NULL,abedabbas,****,A Muzefa,阿巴斯,P,A3XXXXXXXXXXX,8,NULL,muzefaabbas,****,A TAIBA,阿巴斯,P,A3XXXXXXXXXXX,11,NULL,taibaabbas,****,A
使用下面文件中数组中的每个名称进行搜索
Isher,Dhupar,7,7M5,7ae / Ma1 K F TREASURE先生 Saarah,Hassan,7,7M5,7ae / Ma1 K F TREASURE先生 Zenzele,Kabara-Clarke,7,7M5,7ae / Ma1 K F TREASURE先生
并取最后一栏(例如“7ae / Ma1 Mr K F TREASURE”)并将其以适当的名称添加到第一个文件中:
阿贝德,阿巴斯,P,J3XXXXXXXXXXX,7,NULL,abedabbas,****,A Muzefa,阿巴斯,P,A3XXXXXXXXXXX,8,NULL,muzefaabbas,****,A TAIBA,阿巴斯,P,A3XXXXXXXXXXX,11,NULL,taibaabbas,****,A