Всем привет!
Нужен батник для сравнения 2-х текстовых файлов по строчно и вывод различий в отдельный файл.
Например:
Есть 2 текстовых файла (1.txt , 2.txt)
1.txt:
CLIENT=1 LIMIT=100
CLIENT=2 LIMIT=200
CLIENT=3 LIMIT=300
2.txt:
CLIENT=1 LIMIT=100
CLIENT=2 LIMIT=250
CLIENT=3 LIMIT=350
Нужно прочитать эти 2 файла, найти изменения и создать файл 3.txt
Который выглядел бы так:
3.txt:
CLIENT=2 LIMIT=250
CLIENT=3 LIMIT=350
И как быть в тех случаях когда строчки могут быть смещены:
1.txt:
CLIENT=1 LIMIT=100
CLIENT=10 LIMIT=500
CLIENT=2 LIMIT=200
CLIENT=3 LIMIT=300
2.txt:
CLIENT=1 LIMIT=100
CLIENT=2 LIMIT=250
CLIENT=3 LIMIT=350
CLIENT=10 LIMIT=500
Ведь результат должен получиться тотже:
3.txt:
CLIENT=2 LIMIT=250
CLIENT=3 LIMIT=350
PS. Есть конечно программа DiffText , она сравнивает два файла и выделяет отличия, но хотелось автоматизировать процесс ))
Пробовал fc но она выдает немного не тот результат, который хотелось бы получить...
CMD/BAT - Батник для сравнения 2-х текстовых файлов по строчно.
-
Foreigner
Re: CMD/BAT - Батник для сравнения 2-х текстовых файлов по строчно.
Код:
Код: Выделить всё
1>3.txt findstr /v /g:1.txt 2.txt-
ppt_
Re: CMD/BAT - Батник для сравнения 2-х текстовых файлов по строчно.
Цитата Foreigner:
Код:
1>3.txt findstr /v /g:1.txt 2.txt
Работает, коротко и просто )
Но, столкнулся вот с какой проблемой, подложил боевой файл и получил ошибку FINDSTR: Слишком длинная строка поиска. Стал экспериментировать и получается что если строка длиннее 127 символов возникает ошибка. Возможно както обойти это ограничение?
Код:
1>3.txt findstr /v /g:1.txt 2.txt
CMD/BAT - Батник для сравнения 2-х текстовых файлов по строчно.
Работает, коротко и просто )
Но, столкнулся вот с какой проблемой, подложил боевой файл и получил ошибку FINDSTR: Слишком длинная строка поиска. Стал экспериментировать и получается что если строка длиннее 127 символов возникает ошибка. Возможно както обойти это ограничение?
-
Foreigner
Re: CMD/BAT - Батник для сравнения 2-х текстовых файлов по строчно.
Никогда не доводилось работать с такими длинными строками с помощью findstr.exe
Попробуйте с помощью PowerShell:
Код:
Или с помощью
Код:
Попробуйте с помощью PowerShell:
Код:
Код: Выделить всё
compare-object $(gc 1.txt) $(gc 2.txt) | % {
if ( $_.sideindicator -eq "=>" ) { $_.inputobject }
} | out-file -encoding "default" 3.txtИли с помощью
grep
Код:
Код: Выделить всё
1>3.txt grep -vUf 1.txt 2.txt