|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Сравнить два текстовых файла и вывести результат |
|
|
Любой язык - [решено] Сравнить два текстовых файла и вывести результат
|
Ветеран Сообщения: 546 |
Здравствуйте. Может кто - нибудь поможет задачку решить? Есть два txt файла.
пример первого: tetris0001.avi 640x480 0:13:20 196 MB tetris0002.wmv 640x480 0:19:17 282 MB tetris0003.avi 640x480 0:10:44 157 MB tetris0004.mp4 320x240 0:35:09 226 MB tetris0005.mp4 640х480 0:13:20 196 MB File Name.type: 0001google.wmv Resolution: 640x480 Duration: 00:10:40 Filesize: 196 MB File Name.type: 0002google.wmv Resolution: 640x480 Duration: 00:14:05 Filesize: 157.45 MB File Name.type: 0003google.wmv Resolution: 640x480 Duration: 00:14:43 Filesize: 282 MB File Name.type: 0004google.wmv Resolution: 640x480 Duration: 00:12:21 Filesize: 226.61 MB File Name.type: 0005google.wmv Resolution: 640x480 Duration: 00:19:17 Filesize: 196.45 MB Выводимый файл формата "№ файла из 1ого тхт по порядку - № файлов из второго тхт, через запятую". Похожие файлы ищутся по размеру, без учёта десятичных (только целое кол-во MB). алгоритм такой: нужно брать каждый файл (по порядку) из 1ого тхт и искать все похожее по размеру во втором тхт, вывести, потом искать похожие для следующего файл и т.д, пока в первом тхт не достигнем конца списка.. Примечания: номера файлов идут всегда по порядку (что в 1ом что во 2ом тхт), и они все четырехзначные. нужно учитывать целое кол во MB, десятичные не нужно учитывать. Если не найдено ничего похожего, то файл из 1ого тхт пропускается. в тхт файлах будет примерно 1000 - 2000 файлов (на каждый файл по 4 строчки) Если брать пример выше, то результирующий тхт должен быть таким: ![]() |
|
Отправлено: 21:24, 19-07-2022 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Powershell.
$txtFile1 = "C:\temp\1.txt" $txtFile2 = "C:\temp\2.txt" $resultFile = "C:\temp\result.txt" function Get-ColNum { param($txt,$marg) [int]$c = (gc "$txt")[0] -replace '.+(\d{4}).+','$1' (gc "$txt") -match "$marg" -replace '[^\d\.]+' -replace '\..+' |% { $res += ,[pscustomobject]@{ num = $c.tostring("0000") value = $_ } $c++ } $res } $txt1 = Get-ColNum "$txtFile1" " MB$" $txt2 = Get-ColNum "$txtFile2" "^Filesize" $result = $txt1 |% { if ($match = $txt2 |? value -eq $_.value) { "$($_.num) - $($match.num -join ', ')" } } $result > "$resultFile" v3 - учтена возможность наличия цифр в расширении |
------- Последний раз редактировалось DJ Mogarych, 09-08-2022 в 21:31. Причина: v3 Отправлено: 22:24, 19-07-2022 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать DJ Mogarych, Спасибо, сейчас буду разбираться с результирующим файлом, он большой получился.. но так и должно быть
![]() |
Отправлено: 04:56, 20-07-2022 | #3 |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать DJ Mogarych, Проверил, у меня так получается, что скрипт сравнивает не только размеры в строке Filesize, но еще и ищет эти числа в строке "File Name.type:", если находит, ставит файл как похожий.. а также если к примеру в 1ом тхт файл 196 MB, а во втором файле попадается 1963 MB, этот файл тоже записывается как похожий.
к примеру изменим тестируемые файлы на 1: tetris0001.avi 640x480 0:13:20 3 MB tetris0002.wmv 640x480 0:19:17 282 MB tetris0003.avi 640x480 0:10:44 157 MB tetris0004.mp4 320x240 0:35:09 226 MB tetris0005.mp4 640х480 0:13:20 196 MB File Name.type: 0001google.wmv Resolution: 640x480 Duration: 00:10:40 Filesize: 3 MB File Name.type: 0002google.wmv Resolution: 640x480 Duration: 00:14:05 Filesize: 157.45 MB File Name.type: 0003google.wmv Resolution: 640x480 Duration: 00:14:43 Filesize: 282 MB File Name.type: 0004google.wmv Resolution: 640x480 Duration: 00:12:21 Filesize: 236.61 MB File Name.type: 0005google.wmv Resolution: 640x480 Duration: 00:19:17 Filesize: 196.45 MB |
Отправлено: 09:52, 20-07-2022 | #4 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Поправил выше, пробуйте.
|
|
------- Отправлено: 10:24, 20-07-2022 | #5 |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать DJ Mogarych, спасбо, теперь как нужно ищет
![]() |
Отправлено: 13:25, 20-07-2022 | #6 |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать Здравствуйте. А можно ещё вариант скрипта, чтобы учитывался полный размер файла (с десятыми и сотыми), а не только целое число..
т.е. размер может быть вида к примеру: 145 MB 169.63 MB 123.6 MB Похожими файлы будут считаться только если размер полностью совпадает.. |
Отправлено: 20:47, 08-08-2022 | #7 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 09:03, 09-08-2022 | #8 |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать DJ Mogarych, спасибо, все четко, есть маленький сбой у меня, но это происходит, только если первый файл в 1ом или втором (или в двух) тхт, с расширением mp4. скрипт подставляет к номеру четверку, а потом с этого номера стартует.
вот пример: tetris0001.mp4 640x480 0:13:20 196.69 MB tetris0002.mp4 640x480 0:19:17 282 MB tetris0003.mp4 640x480 0:10:44 157 MB tetris0004.mp4 320x240 0:35:09 226 MB tetris0005.mp4 640х480 0:13:20 196 MB File Name.type: 0001google.wmv Resolution: 640x480 Duration: 00:10:40 Filesize: 196 MB File Name.type: 0002google.mp4 Resolution: 640x480 Duration: 00:14:05 Filesize: 157.45 MB File Name.type: 0003google.mp4 Resolution: 640x480 Duration: 00:14:43 Filesize: 282 MB File Name.type: 0004google.mp4 Resolution: 640x480 Duration: 00:12:21 Filesize: 226.61 MB File Name.type: 0005google.mp4 Resolution: 640x480 Duration: 00:19:17 Filesize: 196.69 MB или наоборот, во 2ом тхт: tetris0001.avi 640x480 0:13:20 196.69 MB tetris0002.mp4 640x480 0:19:17 282 MB tetris0003.mp4 640x480 0:10:44 157 MB tetris0004.mp4 320x240 0:35:09 226 MB tetris0005.mp4 640х480 0:13:20 196 MB File Name.type: 0001google.mp4 Resolution: 640x480 Duration: 00:10:40 Filesize: 196 MB File Name.type: 0002google.mp4 Resolution: 640x480 Duration: 00:14:05 Filesize: 157.45 MB File Name.type: 0003google.mp4 Resolution: 640x480 Duration: 00:14:43 Filesize: 282 MB File Name.type: 0004google.mp4 Resolution: 640x480 Duration: 00:12:21 Filesize: 226.61 MB File Name.type: 0005google.mp4 Resolution: 640x480 Duration: 00:19:17 Filesize: 196.69 MB Я так понял Всё зависит от первого файла, а остальные неважно С каким расширением. |
Отправлено: 17:32, 09-08-2022 | #9 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Поправил скрипт выше, пробуйте.
|
------- Отправлено: 17:57, 09-08-2022 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Сравнить два текстовых файла, с исключением повторяющихся строк | KoRn0509 | Скриптовые языки администрирования Windows | 4 | 04-11-2020 11:12 | |
CMD/BAT - Как сравнить разницу в двух текстовых документах и вывести разницу в новый текстовый | mrusklon | Скриптовые языки администрирования Windows | 6 | 31-10-2019 17:05 | |
CMD/BAT - [решено] Сравнить два текста и вывести результат | shao | Скриптовые языки администрирования Windows | 2 | 12-09-2011 10:30 | |
[решено] Как сравнить два текстовых файла и выявить изменения | assch | AutoIt | 1 | 09-09-2010 23:25 | |
как сравнить два звуковых файла | alexra | Видео и аудио: обработка и кодирование | 8 | 31-07-2007 00:42 |
|