Board logo

标题: [文件操作] 批处理怎样筛选一个csv报表中有但另一个中没有的内容? [打印本页]

作者: zhoubinqiu    时间: 2010-1-27 23:23     标题: 批处理怎样筛选一个csv报表中有但另一个中没有的内容?

请教高手


我有两个csv报表1.csv    2.csv
1.csv                                                      2.CSV

序号     姓名     性别    年龄                     序号     姓名     性别
1             AA       B        19                         1         AA         B
2             BB       B        19                         2         BB         B
3             CC       G       18                         3         DD        G


通过2.csv对1.csv筛选,选出结果写入3.csv
                                                            序号     姓名     性别    年龄
                                                                 3         CC      G         18


不好意思,没有描述清楚,是通过2.csv的两列 姓名、性别,和1.csv中找到完全匹配的就不写入3.csv,否则写入。

[ 本帖最后由 zhoubinqiu 于 2010-1-28 10:10 编辑 ]
作者: batman    时间: 2010-1-28 09:00

楼主的意思不是描述得很清楚,你应该是要根据2.csv中第二列来对1.csv进行筛选:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=2" %%a in (2.csv) do set "str=!str! %%a"
  3. for /f "delims=" %%a in ('findstr /iv "!str!" 1.csv') do echo %%a>>3.csv
  4. start 3.csv
复制代码

作者: zhoubinqiu    时间: 2010-1-28 10:00

不好意思,没有描述清楚,是通过2.csv的两列 姓名、性别,和1.csv中找到完全匹配的就不写入3.csv,否则写入。
作者: batman    时间: 2010-1-28 10:08

请把问题描述更新在顶楼,代码修改如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=2,3" %%a in (2.csv) do set "str=!str! %%a,%%b"
  3. for /f "delims=" %%a in ('findstr /iv "!str!" 1.csv') do echo %%a>>3.csv
  4. start 3.csv
复制代码

作者: zhoubinqiu    时间: 2010-1-28 10:26

麻烦能否给个注释,我是新手,看的不是很懂,谢谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2