Board logo

标题: [已解决]如何作出两个文本文件的比较? [打印本页]

作者: gcdj     时间: 2010-11-25 08:09    标题: [已解决]如何作出两个文本文件的比较?

有二个文本文件(A.TXT)内容如下
C508
C50D
C511
E1E9
C517
E1E0
C548
C54C

另一个文本文件为B.TXT内容如下

C508        =>diversity(OK)
C50D        =>DAB(OK)
C511        =>antenna(OK)
E1E9        =>front (OK)
C517        =>GPSOK)
E1E0        =>W(OK)
C548        =>99(OK)
C54C        =>KK(OK)
9820        =>de(OK)
8r9fV        =>ae(NG)


要求实行批处理后在A.TXT的文件变为

C508
C50D
C511
E1E9
C517
E1E0
C548
C54C





C508        =>diversity(OK)
C50D        =>DAB(OK)
C511        =>antenna(OK)
E1E9        =>front (OK)
C517        =>GPSOK)
E1E0        =>W(OK)
C548        =>99(OK)
C54C        =>KK(OK)

[ Last edited by gcdj on 2010-12-2 at 07:44 ]
作者: wewebb     时间: 2010-11-25 12:24

@echo off
(echo.&echo.
(for /f %%a in (a.txt) do (
        for /f "tokens=1*" %%x in (b.txt) do if "%%a" == "%%x" echo %%x   %%y   

     )
) ) > tmp.txt
type tmp.txt >> a.txt & del tmp.txt
a.txt
[ Last edited by wewebb on 2010-11-26 at 13:52 ]
作者: meteormiao     时间: 2010-11-25 21:43
置顶帖里有,真的,一模一样的问题
作者: gcdj     时间: 2010-11-26 07:41


  Quote:
Originally posted by meteormiao at 2010-11-25 21:43:
置顶帖里有,真的,一模一样的问题

在哪里呀?

能贴上来吗?

谢谢!
作者: gcdj     时间: 2010-11-26 07:44


  Quote:
Originally posted by wewebb at 2010-11-25 12:24:
[code]
(for /f %%a in (a.txt) do (
        for /f "tokens=1*" %%x in (b.txt) do if "%%a" == "%%x" echo %%x   %%y        )
echo.&echo.) > tmp.txt
type tmp.txt >> a.t ...

谢谢你!

这个实行之后a.txt变成下面的文件.我不想输出文件的录经.

而且每一行都比较了5次这是为什么?

C508
C50D
C511
E1E9
C517
E1E0
C548
C54C

Z:\work1>(for /F "tokens=1*" %x in (b.txt) do if "C508" == "%x" echo %x   %y         )

Z:\work1>if "C508" == "C508" echo C508   =>diversity(OK)         
C508   =>diversity(OK)        

Z:\work1>if "C508" == "C50D" echo C50D   =>DAB(OK)         

Z:\work1>if "C508" == "C511" echo C511   =>antenna(OK)         

Z:\work1>if "C508" == "E1E9" echo E1E9   =>front (OK)         

Z:\work1>if "C508" == "C517" echo C517   =>GPSOK)         

Z:\work1>if "C508" == "E1E0" echo E1E0   =>W(OK)         

Z:\work1>if "C508" == "C548" echo C548   =>99(OK)         

Z:\work1>if "C508" == "C54C" echo C54C   =>KK(OK)         

Z:\work1>if "C508" == "9820" echo 9820   =>de(OK)         

Z:\work1>if "C508" == "8r9fV" echo 8r9fV   =>ae(NG)         

Z:\work1>(for /F "tokens=1*" %x in (b.txt) do if "C50D" == "%x" echo %x   %y         )

Z:\work1>if "C50D" == "C508" echo C508   =>diversity(OK)         

Z:\work1>if "C50D" == "C50D" echo C50D   =>DAB(OK)         
C50D   =>DAB(OK)        

Z:\work1>if "C50D" == "C511" echo C511   =>antenna(OK)         

Z:\work1>if "C50D" == "E1E9" echo E1E9   =>front (OK)         

Z:\work1>if "C50D" == "C517" echo C517   =>GPSOK)         

Z:\work1>if "C50D" == "E1E0" echo E1E0   =>W(OK)         

Z:\work1>if "C50D" == "C548" echo C548   =>99(OK)         

Z:\work1>if "C50D" == "C54C" echo C54C   =>KK(OK)         

Z:\work1>if "C50D" == "9820" echo 9820   =>de(OK)         

Z:\work1>if "C50D" == "8r9fV" echo 8r9fV   =>ae(NG)         

Z:\work1>(for /F "tokens=1*" %x in (b.txt) do if "C511" == "%x" echo %x   %y         )

Z:\work1>if "C511" == "C508" echo C508   =>diversity(OK)         

Z:\work1>if "C511" == "C50D" echo C50D   =>DAB(OK)         

Z:\work1>if "C511" == "C511" echo C511   =>antenna(OK)         
C511   =>antenna(OK)        

Z:\work1>if "C511" == "E1E9" echo E1E9   =>front (OK)         

Z:\work1>if "C511" == "C517" echo C517   =>GPSOK)         

Z:\work1>if "C511" == "E1E0" echo E1E0   =>W(OK)         

Z:\work1>if "C511" == "C548" echo C548   =>99(OK)         

Z:\work1>if "C511" == "C54C" echo C54C   =>KK(OK)         

Z:\work1>if "C511" == "9820" echo 9820   =>de(OK)         

Z:\work1>if "C511" == "8r9fV" echo 8r9fV   =>ae(NG)         

Z:\work1>(for /F "tokens=1*" %x in (b.txt) do if "E1E9" == "%x" echo %x   %y         )

Z:\work1>if "E1E9" == "C508" echo C508   =>diversity(OK)         

Z:\work1>if "E1E9" == "C50D" echo C50D   =>DAB(OK)         

Z:\work1>if "E1E9" == "C511" echo C511   =>antenna(OK)         

Z:\work1>if "E1E9" == "E1E9" echo E1E9   =>front (OK)         
E1E9   =>front (OK)        

Z:\work1>if "E1E9" == "C517" echo C517   =>GPSOK)         

Z:\work1>if "E1E9" == "E1E0" echo E1E0   =>W(OK)         

Z:\work1>if "E1E9" == "C548" echo C548   =>99(OK)         

Z:\work1>if "E1E9" == "C54C" echo C54C   =>KK(OK)         

Z:\work1>if "E1E9" == "9820" echo 9820   =>de(OK)         

Z:\work1>if "E1E9" == "8r9fV" echo 8r9fV   =>ae(NG)         

Z:\work1>(for /F "tokens=1*" %x in (b.txt) do if "C517" == "%x" echo %x   %y         )

Z:\work1>if "C517" == "C508" echo C508   =>diversity(OK)         

Z:\work1>if "C517" == "C50D" echo C50D   =>DAB(OK)         

Z:\work1>if "C517" == "C511" echo C511   =>antenna(OK)         

Z:\work1>if "C517" == "E1E9" echo E1E9   =>front (OK)         

Z:\work1>if "C517" == "C517" echo C517   =>GPSOK)         
C517   =>GPSOK)        

Z:\work1>if "C517" == "E1E0" echo E1E0   =>W(OK)         

Z:\work1>if "C517" == "C548" echo C548   =>99(OK)         

Z:\work1>if "C517" == "C54C" echo C54C   =>KK(OK)         

Z:\work1>if "C517" == "9820" echo 9820   =>de(OK)         

Z:\work1>if "C517" == "8r9fV" echo 8r9fV   =>ae(NG)         

Z:\work1>(for /F "tokens=1*" %x in (b.txt) do if "E1E0" == "%x" echo %x   %y         )

Z:\work1>if "E1E0" == "C508" echo C508   =>diversity(OK)         

Z:\work1>if "E1E0" == "C50D" echo C50D   =>DAB(OK)         

Z:\work1>if "E1E0" == "C511" echo C511   =>antenna(OK)         

Z:\work1>if "E1E0" == "E1E9" echo E1E9   =>front (OK)         

Z:\work1>if "E1E0" == "C517" echo C517   =>GPSOK)         

Z:\work1>if "E1E0" == "E1E0" echo E1E0   =>W(OK)         
E1E0   =>W(OK)        

Z:\work1>if "E1E0" == "C548" echo C548   =>99(OK)         

Z:\work1>if "E1E0" == "C54C" echo C54C   =>KK(OK)         

Z:\work1>if "E1E0" == "9820" echo 9820   =>de(OK)         

Z:\work1>if "E1E0" == "8r9fV" echo 8r9fV   =>ae(NG)         

Z:\work1>(for /F "tokens=1*" %x in (b.txt) do if "C548" == "%x" echo %x   %y         )

Z:\work1>if "C548" == "C508" echo C508   =>diversity(OK)         

Z:\work1>if "C548" == "C50D" echo C50D   =>DAB(OK)         

Z:\work1>if "C548" == "C511" echo C511   =>antenna(OK)         

Z:\work1>if "C548" == "E1E9" echo E1E9   =>front (OK)         

Z:\work1>if "C548" == "C517" echo C517   =>GPSOK)         

Z:\work1>if "C548" == "E1E0" echo E1E0   =>W(OK)         

Z:\work1>if "C548" == "C548" echo C548   =>99(OK)         
C548   =>99(OK)        

Z:\work1>if "C548" == "C54C" echo C54C   =>KK(OK)         

Z:\work1>if "C548" == "9820" echo 9820   =>de(OK)         

Z:\work1>if "C548" == "8r9fV" echo 8r9fV   =>ae(NG)         

Z:\work1>(for /F "tokens=1*" %x in (b.txt) do if "C54C" == "%x" echo %x   %y         )

Z:\work1>if "C54C" == "C508" echo C508   =>diversity(OK)         

Z:\work1>if "C54C" == "C50D" echo C50D   =>DAB(OK)         

Z:\work1>if "C54C" == "C511" echo C511   =>antenna(OK)         

Z:\work1>if "C54C" == "E1E9" echo E1E9   =>front (OK)         

Z:\work1>if "C54C" == "C517" echo C517   =>GPSOK)         

Z:\work1>if "C54C" == "E1E0" echo E1E0   =>W(OK)         

Z:\work1>if "C54C" == "C548" echo C548   =>99(OK)         

Z:\work1>if "C54C" == "C54C" echo C54C   =>KK(OK)         
C54C   =>KK(OK)        

Z:\work1>if "C54C" == "9820" echo 9820   =>de(OK)         

Z:\work1>if "C54C" == "8r9fV" echo 8r9fV   =>ae(NG)
作者: gcdj     时间: 2010-11-26 08:04
@echo off
if exist 1.txt del 1.txt
for /f "delims=: tokens=1*" %%a in (a.txt) do (
        for /f "delims=" %%_ in ('findstr "%%a" b.txt') do (
                if NOT "%%a:%%b"=="%%_" >>1.txt echo %%_
        )
)
start 1.txt
作者: wewebb     时间: 2010-11-26 13:48


  Quote:
Originally posted by gcdj at 2010-11-26 07:44:

这个实行之后a.txt变成下面的文件.我不想输出文件的录经.

而且每一行都比较了5次这是为什么?

...

不好意思。
复制代码的时候在上面漏了一行:  @echo off 。
现在重新编辑好了。

[ Last edited by wewebb on 2010-11-26 at 13:50 ]
作者: gcdj     时间: 2010-12-1 07:51


  Quote:
Originally posted by wewebb at 2010-11-26 13:48:



不好意思。
复制代码的时候在上面漏了一行:  @echo off 。
现在重新编辑好了。

[ Last edited by wewebb on 2010-11-26 at 13:50 ]

谢谢!

能否在加一个功能!

就是如果A文件里有的,B文件里没有的能否加上注释什么的?
作者: Hanyeguxing     时间: 2010-12-1 09:40


  Quote:
Originally posted by gcdj at 2010-12-1 07:51:
谢谢!
能否在加一个功能!
就是如果A文件里有的,B文件里没有的能否加上注释什么的?

没有说明在什么位置加注释,怎么加。。。
@echo off
for /f %%a in (A.txt) do set #%%a==
(echo/&echo/
for /f "tokens=1*" %%a in (B.txt) do if defined #%%a set #%%a=&echo %%a        %%b)>tmp_1.txt
(for /f %%a in (A.txt) do if defined #%%a (echo %%a;仅A.txt有) else echo %%a)>tmp_2.txt
copy /b tmp_2.txt+tmp_1.txt A.txt>nul
del /q tmp_*
这里将注释加在上半部分

[ Last edited by Hanyeguxing on 2010-12-1 at 09:44 ]
作者: wewebb     时间: 2010-12-1 11:23
LS 以“#变量名” 作为 “比较字符串” 的思路很好。呵呵。
作者: Hanyeguxing     时间: 2010-12-1 13:14

@echo off
(
for /f "tokens=1*" %%a in (B.txt) do set #%%a==
for /f %%a in (A.txt) do if defined #%%a (echo %%a) else echo %%a;仅A.txt有
echo/&echo/
findstr /b /g:A.txt B.txt 2>nul
)>tmp.txt
del /q A.txt
ren tmp.txt A.txt

作者: gcdj     时间: 2010-12-2 07:43


  Quote:
Originally posted by Hanyeguxing at 2010-12-1 13:14:
[code]@echo off
(
for /f "tokens=1*" %%a in (B.txt) do set #%%a==
for /f %%a in (A.txt) do if defined #%%a (echo %%a) else echo %%a;仅A.txt有
echo/&echo/
findstr /b /g:A.txt B. ...

问题已解决!谢谢!!
作者: acaigg     时间: 2010-12-25 12:38
只有学习的份