Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Батник для сравнения 10-20 текстовых файлов построчно. (http://forum.oszone.net/showthread.php?t=326386)

Amonius 29-04-2017 15:58 2733110

Батник для сравнения 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

Iska 29-04-2017 21:39 2733152

Amonius, упакуйте образцы не менее трёх файлов в архив и приложите к сообщению, либо выложите на RGhost или Яндекс.Диск.

Не очень понятно, что Вы хотите получить. Сначала пишете одно:
Цитата:

Цитата Amonius
и вывод различий в отдельный файл »

затем противоположное:
Цитата:

Цитата Amonius
выявить схожее содержание строки не взирая на её смещение и сохранить их в новом результат.txt »

Поясните. Также уточните — сравнение файлов общее групповое или каждого с каждым попарно? То есть, например, если мы ищем совпадение, то оно должно присутствовать: в первом случае — во всех файлах, во втором случае — достаточно присутствия в каких-нибудь двух файлах.

Amonius 29-04-2017 22:06 2733154

Iska, Благодарю за коррективу.
Пояснение. в первом случае — во всех файлах
Ссылка на файлы. https://yadi.sk/d/Uy1kn97J3HUri5

Iska 30-04-2017 00:39 2733163

Amonius, Вы не всё пояснили. Вам потребны различия или совпадения?

Предположим, интересуют совпадения. Берёте Log Parser 2.2, устанавливаете. Для просмотра «глазками» используете, например, такой код:
Код:

"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

Amonius 30-04-2017 02:10 2733170

Iska, Совпадения из всех документов.

Iska 30-04-2017 02:19 2733171

Amonius, тогда пробуйте. Код я привёл.


Время: 22:44.

Время: 22:44.
© OSzone.net 2001-