Windows CMD / BATCH 命令 - FC 命令显示匹配的上方/下方行

Pan*_*aju 5 cmd batch-file difference

我想使用 cmd.exe 的fc命令比较 2 个文本文件。但是,它也会打印不匹配行的上方和下方行。我该如何抑制这种行为?

a.txt

32=10500.3000000
31=5252.8095
30=XXXX
75=20170208 00:32:40
6=5252.8095
60=20170208-00:00:03

b.txt

32=10500.3000000
31=5252.8095
30=年
75=20170208 00:32:40
6=5252.8095
60=20170208-00:00:03

命令-fc /l /n /c /t /lb200 a.txt b.txt1

输出 比较文件a.txt和B.TXT

***** a.txt
    2:31=5252.8095
    3:30=XXXX
    4:75=20170208 00:32:40
***** B.TXT
    2:31=5252.8095
    3: 30=年
    4:75=20170208 00:32:40
*****

我想要的是

***** a.txt
    3:30=XXXX
***** B.TXT
    3: 30=年
*****

MC *_* ND 2

您可以以此为起点

@echo off
    setlocal enableextensions disabledelayedexpansion

    for /f "tokens=1,* delims=: eol=*" %%a in ('
        fc /l /n /t /c 1.txt 2.txt 
    ') do (
        if defined _%%a (
            set "line=%%b"
            setlocal enabledelayedexpansion
            if not !_%%a!==!line! (
                echo(%%a: !_%%a!
                echo(%%a: !line!
                echo(
            )
            endlocal
            set "_%%a="
        ) else set "_%%a=%%b"
    )
Run Code Online (Sandbox Code Playgroud)

在处理命令的输出时fc,为每个行号定义一个变量。当找到相同的行号时,将变量的内容与新行进行比较,如果它们不同,则回显两行。