Zrobiłem trzy pliki tekstowe: 0nl.txt
, 1nl.txt
i 2nl.txt
.
Oba mają tę samą treść:
test
hello
Jedyną różnicą między nimi jest to, ile mają nowych linii po ostatnim „o”, odpowiednio 0, 1 i 2.
Mogę porównywać pliki za pomocą FC
:
C:\Users\NeatN\Desktop\fctest>fc 0nl.txt 1nl.txt
Comparing files 0nl.txt and 1NL.TXT
FC: no differences encountered
C:\Users\NeatN\Desktop\fctest>fc 0nl.txt 2nl.txt
Comparing files 0nl.txt and 2NL.TXT
***** 0nl.txt
***** 2NL.TXT
*****
C:\Users\NeatN\Desktop\fctest>fc 1nl.txt 2nl.txt
Comparing files 1nl.txt and 2NL.TXT
***** 1nl.txt
***** 2NL.TXT
*****
COMP
, z drugiej strony, wykrywa, że mają różne rozmiary, ale nie pokazuje różnic między nimi:
C:\Users\NeatN\Desktop\fctest>comp 0nl.txt 1nl.txt /M
Comparing 0nl.txt and 1nl.txt...
Files are different sizes.
C:\Users\NeatN\Desktop\fctest>comp 0nl.txt 2nl.txt /M
Comparing 0nl.txt and 2nl.txt...
Files are different sizes.
C:\Users\NeatN\Desktop\fctest>comp 1nl.txt 2nl.txt /M
Comparing 1nl.txt and 2nl.txt...
Files are different sizes.
Jak wykryć brakujący nowy wiersz w 0nl.txt
porównaniu z nim 1nl.txt
i pokazać go użytkownikowi?
windows
batch-file
NeatNit
źródło
źródło
Rozwiązałem go za pomocą następującego kodu:
Zasadniczo najpierw dokonuję porównania binarnego, a jeśli to się nie powiedzie, musi istnieć różnica. Jeśli porównanie ASCII przejdzie później, różnica musi być w ostatnim nowym wierszu.
źródło