我正在尝试比较两个文件(old.txt和new.txt),如果new.txt中的任何行与old.txt不同,则输出到txt文件。我不希望新文件中出现old.txt中的任何行。
新文件上传到c:\ temp \ download,一旦处理完毕,将被复制到c:\ temp \ download \ archived。
我在下面使用的脚本将在c:\ temp \ download中找到最新文件,并将其与c:\ temp \ download \ archived中的最后一个修改文件进行比较,并将差异输出到txt文件。它适用于大多数情况,但我面临的问题是输出(%latestD%)文件还包含来自old.txt的行。它应该是单向比较,新旧比较,输出应该不包含来自old.txt的行。
以下是我要实现的目标:
OLD.txt
吉姆789
简123
詹姆斯999
莉莉111
的 NEW.txt
吉姆123
简123
詹姆斯123
的 output.txt的
吉姆123
詹姆斯123
set "fC=C:\temp\download"
set "latestC="
for /f "delims=" %%a in ('dir "%fC%" /b /od /a-d /tw 2^>nul') do set "latest=%%a" & set "latestC=%fC%\%%a"
set "fD=C:\temp\download\archived
set "latestD="
for /f "delims=" %%a in ('dir "%fD%" /b /od /a-d /tw 2^>nul') do set "latestD=%fD%\%%a"
if not defined latestC ( echo NO File in C & exit /b )
if not defined latestD ( echo NO File in D & exit /b )
for /f "tokens=1,*" %%a in (
'diff "%latestC%" "%latestD%" ^| findstr /r /c:"^<" /c:"^>"'
) do (
>> "C:\temp\%latest%" echo(%%b
)
谢谢!
答案 0 :(得分:0)
这应该按照你的要求行事:
findstr /v /g:"old.txt" "new.txt"