[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

[ 本帖最后由 put371 于 2011-2-28 13:57 编辑 ]

这个不要找高手,a和b没有相同的列。。。
***共同提高***

TOP

回复 2楼 的帖子

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

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

TOP

方法一:
  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 编辑 ]
***共同提高***

TOP

我也来个。但是不支持空行
  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
复制代码
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

回复 5楼 的帖子

楼主是要计算行号相同内容也相同的行数,而兄弟的代码等同于findstr /g:a.txt b.txt
***共同提高***

TOP

回复 6楼 的帖子

呵呵,在内部已经作了处理"SET "%%I="
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

回复 7楼 的帖子

a.txt:
a
b
c
d
b.txt:
1
2
a
b
兄弟的代码会计算会2行相同,但按楼主的意思是没有一行相同。。。
***共同提高***

TOP

谢谢 大家的热心  我发现 还有很多 看不懂 哈哈。我要研究一下。谢谢

TOP

回复 8楼 的帖子

啊.LZ说的是行的位置也是一样的啊,不好意思,理解错误
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

返回列表