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

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

shmel_sv@vk 24-10-2014 15:48 2419880

поиск совпадений в файлах
 
доброго времени суток есть файлы sfv для проверки цельности файлов
иногда попадаются не совсем правильные файлы а именно
пример
1-bablablaa.rar 3ba66626
2-bablablaa.rar 2b4d5280
a.rar 2b4d5280
тоесть есть 2 совпадения
первые два файла существуют, третий нет и свидетельствует этому контрольная сумма (одинаковая)
мне надо чтоб искало (и создавало лог файл с полным путем этого неправильных .sfv) совпадения последних 8 символов в файлах, либо просто совпадения по второй колонке, так как разделитель пробел (наверно этот вариант легче)
файлов очень много и лежат они в субдиректориях

Iska 24-10-2014 16:14 2419892

Что такое файлы sfv, откуда они берутся, как рассчитывается контрольная сумма?

shmel_sv@vk 24-10-2014 17:39 2419942

sfv это файлы которые дежат контрольные суммы crc32
https://ru.wikipedia.org/wiki/SFV
они уже скачаны из интернета. и проверяются стороними приложениями
по большому счету это маленькие тхт файлы
в них заложена инфа. но инфа бывает некоректна и тогда мне показывает что контрольные суммы не совпадают
но поскольку как в предыдущем примере сумма одинаковая значит и файл тот же. но название файла неправильное, я потом вручную проверяю по названию должен ли быть там файл

Iska 24-10-2014 18:22 2419958

shmel_sv@vk, как хотите, но всё одно непонятно. На конкретном примере попробуйте пояснить что ли…

shmel_sv@vk 24-10-2014 22:30 2420112

наверно слишком много не нужной нифы написал
итак с самого начала и проще

есть текстовые файлы в которых нужно найти совпадения последних столбцов и вывести отчет

Georgio 24-10-2014 22:47 2420123

Код:

@echo off

set "dir=D:\Test"
set "ext=.sfv"
set "log=list.log"

2>nul del "%log%"
pushd "%dir%"
for /f "delims=" %%i in ('"2>nul dir /a-d/b/s "*%ext%""') do call:sub "%%i"
popd

exit /b


:sub
 for /f "usebackq delims=" %%i in (%1) do (
  set x=%%i
  call findstr /ec:" %%x:~-8%%" %1| find /c /v ""| >nul findstr /vx 1&& (
  for /f "delims=" %%m in (%1) do >>"%~dp0%log%" echo %%m& exit /b
  )
  )

 exit /b


mwz 24-10-2014 22:51 2420128

Цитата:

Цитата shmel_sv@vk
первые два файла существуют, третий нет и свидетельствует этому контрольная сумма (одинаковая) »

Вы считаете что два совершенно разных файла не могут иметь одинаковую CRC32??
Про коллизии никогда не слышали?

shmel_sv@vk 25-10-2014 02:58 2420196

Georgio, спасибо, но чегото не работало
за 2 часа смог запилить такой батник, путем проб и ошибок и гуглу

findstr /s /e "[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]" %CD%\*.sfv >all.sfv.txt
sed -r "s/.+ //g" all.sfv.txt | sort | uniq -d -i > dup.sfv.txt
@>>dupe2check.sfv.txt findstr /i /g:dup.sfv.txt all.sfv.txt


всем спасибо!


Время: 09:41.

Время: 09:41.
© OSzone.net 2001-