Показать полную графическую версию : [решено] Батник для сравнения 10-20 текстовых файлов построчно.
Нужен батник для сравнения от 2 до 20 текстовых файлов построчно и вывод одинаковых строк в отдельный файл.
Например:
Есть от 2 до 20 текстовых файла (1.txt , 2.txt , 3.txt , 4.txt , 5.txt , 6.txt , 7.txt и т.д.)
1.txt:
28583 optimistka
243948 Laviza
120273 Екатеринао
15255 Irka14
99661 Danna
184263 VVK15
9400 Serpent777
9185 Medvedica
2.txt:
99661 Danna
28583 optimistka
243948 Laviza
120273 Екатеринао
211000 Lada002
32305 AngelLove
Требуется сравнение содержимого, выявить схожее содержание строки не взирая на её смещение и сохранить их в новом результат.txt
99661 Danna
28583 optimistka
243948 Laviza
120273 Екатеринао
Для примера приведены 2.txt желательна возможность сравнивать от 2 до 20 txt
Можно CMD или PowerShell
Amonius, упакуйте образцы не менее трёх файлов в архив и приложите к сообщению, либо выложите на RGhost или Яндекс.Диск.
Не очень понятно, что Вы хотите получить. Сначала пишете одно:
и вывод различий в отдельный файл »
затем противоположное:
выявить схожее содержание строки не взирая на её смещение и сохранить их в новом результат.txt »
Поясните. Также уточните — сравнение файлов общее групповое или каждого с каждым попарно? То есть, например, если мы ищем совпадение, то оно должно присутствовать: в первом случае — во всех файлах, во втором случае — достаточно присутствия в каких-нибудь двух файлах.
Iska, Благодарю за коррективу.
Пояснение. в первом случае — во всех файлах
Ссылка на файлы. https://yadi.sk/d/Uy1kn97J3HUri5
Amonius, Вы не всё пояснили. Вам потребны различия или совпадения?
Предположим, интересуют совпадения. Берёте Log Parser 2.2 (https://technet.microsoft.com/en-us/scriptcenter/dd919274.aspx), устанавливаете. Для просмотра «глазками» используете, например, такой код:
"C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT Field1 AS Line, COUNT(*) AS Total FROM 'C:\Мои проекты\0068\00*.txt' GROUP BY Field1 HAVING Total > 1" -i:CSV -headerRow:OFF -iCodepage:65001 -oCodepage:866 -rtp:-1
где: "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" — путь к установленному приложению, 'C:\Мои проекты\0068\00*.txt' — путь и маска к исходным файлам.
Для получения результата в файл:
"C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT Field1 AS Line FROM 'C:\Мои проекты\0068\00*.txt' GROUP BY Field1 HAVING COUNT(*) > 1" -i:CSV -headerRow:OFF -iCodepage:65001 -oCodepage:65001 -q:ON >"Result.txt"
Можно, разумеется, и PowerShell задействовать. Для PowerShell 5.0, посмотреть:
Get-Content -Path 'C:\Мои проекты\0068\00*.txt' -Encoding UTF8 | Group-Object | Where-Object Count -gt 1 | Select-Object -ExpandProperty Name
Вывод в файл:
Get-Content -Path 'C:\Мои проекты\0068\00*.txt' -Encoding UTF8 | Group-Object | Where-Object Count -gt 1 | Select-Object -ExpandProperty Name | Set-Content -Path 'Result.txt' -Encoding UTF8
Iska, Совпадения из всех документов.
Amonius, тогда пробуйте. Код я привёл.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.