Batch file 使用批处理文件的Vlookup样式csv合并
我有一个小批量文件,它根据匹配值合并两个csv文件。见以下代码:Batch file 使用批处理文件的Vlookup样式csv合并,batch-file,csv,Batch File,Csv,我有一个小批量文件,它根据匹配值合并两个csv文件。见以下代码: @ECHO OFF for /f "tokens=1 delims=, skip=1" %%i in (File2.csv) do @findstr "%%i," File1.csv >nul & If errorlevel 0 if not errorlevel 1 (for /f "tokens=1-4 delims=," %%m in ('findstr /i /L "%%i," File1.csv
@ECHO OFF
for /f "tokens=1 delims=, skip=1" %%i in (File2.csv) do @findstr "%%i," File1.csv >nul & If errorlevel 0 if not errorlevel 1 (for /f "tokens=1-4 delims=," %%m in ('findstr /i /L "%%i," File1.csv') do (@echo %%1,%%2,%%3,%%4>>output.csv
echo %%i))
My file2.csv包含4列数据,My file1.csv包含2列数据。和上的第1列是我要匹配的唯一值(它是包含扩展名的文件名)
我希望我的输出csv包含File2.csv中的所有4列数据,以及与之匹配的File1.csv的第2列数据
然后,我希望删除输出csv的第一列,并将其替换为File1.csv中的第2列
我希望我已经充分解释了这一点,我只是想知道这是否可行
任何帮助都将不胜感激 编辑:根据注释修改代码
编辑2:删除文件1.csv中的引号
下面的批处理文件假设如下:
File1.csv:
"file name.ext","col1-2"
file name.ext,col2-2,col2-3,col2-4
col1-2,col2-2,col2-3,col2-4
File2.csv:
"file name.ext","col1-2"
file name.ext,col2-2,col2-3,col2-4
col1-2,col2-2,col2-3,col2-4
Output.csv:
"file name.ext","col1-2"
file name.ext,col2-2,col2-3,col2-4
col1-2,col2-2,col2-3,col2-4
什么类型的数据?显示所需输出的示例很有帮助。为了澄清,在每个文件的第1列上进行匹配,并输出文件2中的所有列+文件1中的第2列?是否有一种方法可以更轻松地上载示例文件?没有StackOverflow自带的上载功能,但和很流行。否则,你必须将粘贴复制到你的问题中。假设已经足够准确了,只是我不需要在输出的末尾使用第1-2列,我只需要它来替换a列中的文件名。另外,我的数据不包含标题,不确定这是否会影响它?请清除这一点:File1.csv和File2.csv不包含标题吗?然后,代码中的
for
命令中的skip=1
用于什么?这是正确的,没有包含标题,此代码是通过复制和粘贴代码位来编译的。我在这方面没有经验,因此我自己也不完全理解代码。抱歉搞混了!谢谢,这产生了我想要的确切格式,但是它似乎与文件不匹配。两个csv上都有匹配的值,但在第1列的输出中,我只有NoMatchingFileName。请忽略我的上一条评论,它不匹配,因为我的file1.csv包含“数据周围”。谢谢。