Board logo

标题: [文本处理] 批处理怎样算出A.TXT和B.TXT有几个相同的列? [打印本页]

作者: put371    时间: 2011-2-28 13:32     标题: 批处理怎样算出A.TXT和B.TXT有几个相同的列?

比如a,TXT里面是
a
b
c
d
在b.TXT里面是
b
b
c
d
如果用批处理计算出 a 和b  里面有几个相同的行不好意思 刚才打错了

[ 本帖最后由 put371 于 2011-2-28 13:57 编辑 ]
作者: batman    时间: 2011-2-28 13:36

这个不要找高手,a和b没有相同的列。。。
作者: put371    时间: 2011-2-28 14:43     标题: 回复 2楼 的帖子

算出A.TXT和B.TXT有几个相同的列?请高手指点

比如a,TXT里面是
a
b
c
d
在b.TXT里面是
b
b
c
d
如果用批处理计算出 a 和b  里面有几个相同的行不好意思 刚才打错了
作者: batman    时间: 2011-2-28 15:11

方法一:
  1. @echo off
  2. :lp
  3. if defined n (
  4.    set "sk=skip=%n% "
  5.    ) else (
  6.    set /a m=0
  7. )
  8. if "%_a%" equ "%_b%" set /a m+=1
  9. for %%a in (a b) do (
  10.     set "_%%a="
  11.     for /f "%sk%delims=" %%b in (%%a.txt) do if not defined _%%a set "_%%a=%%b"
  12. )
  13. set /a n+=1
  14. if defined _a goto lp
  15. echo a.txt和b.txt有%m%行相同
  16. pause>nul
复制代码
方法二:
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a num=0
  3. for /f "delims=" %%a in (a.txt) do set /a n+=1&set "_!n!=%%a"
  4. for /f "delims=" %%a in (b.txt) do set /a m+=1&set ".!m!=%%a"
  5. for /l %%a in (1,1,%n%) do if "!_%%a!" equ "!.%%a!" set /a num+=1
  6. echo a.txt和b.txt有%num%行相同
  7. pause>nul
复制代码

[ 本帖最后由 batman 于 2011-2-28 16:03 编辑 ]
作者: wc726842270    时间: 2011-2-28 15:28

我也来个。但是不支持空行
  1. @echo off
  2. set n=0
  3. for /f "delims=" %%i in (a.txt) do (set %%i=a
  4.     for /f "delims=" %%i in (b.txt) do if defined %%i (set /a n+=1&&set "%%i=")
  5. )
  6. echo %n%
  7. pause
复制代码

作者: batman    时间: 2011-2-28 15:42     标题: 回复 5楼 的帖子

楼主是要计算行号相同内容也相同的行数,而兄弟的代码等同于findstr /g:a.txt b.txt
作者: wc726842270    时间: 2011-2-28 15:58     标题: 回复 6楼 的帖子

呵呵,在内部已经作了处理"SET "%%I="
作者: batman    时间: 2011-2-28 16:01     标题: 回复 7楼 的帖子

a.txt:
a
b
c
d
b.txt:
1
2
a
b
兄弟的代码会计算会2行相同,但按楼主的意思是没有一行相同。。。
作者: put371    时间: 2011-2-28 16:12

谢谢 大家的热心  我发现 还有很多 看不懂 哈哈。我要研究一下。谢谢
作者: wc726842270    时间: 2011-2-28 16:22     标题: 回复 8楼 的帖子

啊.LZ说的是行的位置也是一样的啊,不好意思,理解错误




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