查找两个文本文件批处理脚本中的差异列表

时间:2013-12-17 20:42:18

标签: batch-file

她是我想要做的。我有LISTa(data.txt),它包含一个数据列表和LISTb(has.txt),其中包含另一个数据列表。我想比较LISTa(data.txt)和LISTb(has.txt)并确定LISTa(data.txt)中LISTb(has.txt)中没有的内容。我试过以下但没有成功。我认为这是因为两个列表都包含数字。

Findstr /ivg:"%home%\has.txt" "%home%\data.txt" > %home%\final.txt

但我得到的只是一张空白名单

我已经让它使用以下代码,但想知道是否有更容易的东西,因为完成后这将比较列表中的数千行

for /f %%a in (%home%\has.txt) do CALL :sub1 %%a


GOTO EOF
:sub1
ECHO IN sub1
findstr /iv "%1" "%home%\data.txt" > %home%\final.txt
del %home%\data.txt /q
rename %home%\final.txt data.txt    
exit /b

2 个答案:

答案 0 :(得分:1)

@echo off
setlocal

rem Load lines from data.txt
for /F %%a in (%home%\data.txt) do set line[%%a]=1

rem Delete lines from has.txt
for /F %%a in (%home%\has.txt) do set "line[%%a]="

rem Show the rest, that is, lines in data.txt that was not in has.txt
(for /F "tokens=2 delims=[]" %%a in ('set line[') do echo %%a) > %home%\final.txt

答案 1 :(得分:0)

Findstr /b /e /ivg:"%home%\has.txt" "%home%\data.txt" > %home%\final.txt

应该看对你了。它确保匹配是针对整行进行的,因此123中的data.txt2中的has.txt不匹配。