她是我想要做的。我有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
答案 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.txt
与2
中的has.txt
不匹配。