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
Originally posted by meteormiao at 2010-11-25 21:43:
置顶帖里有,真的,一模一样的问题


在哪里呀?

能贴上来吗?

谢谢!

作者: gcdj     时间: 2010-11-26 07:44
Originally posted by wewebb at 2010-11-25 12:24:

(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
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
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
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
Originally posted by Hanyeguxing at 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. ...



问题已解决!谢谢!!

作者: acaigg     时间: 2010-12-25 12:38
只有学习的份