3

Я в странной ситуации. Мне нужно найти файл на основе его содержимого, а не имени, потому что имя не уникально ...

Например, у меня есть файл с именем "cat.jpg". Это изображение кота. У меня получилось 5 миллионов копий этого в 5 миллионов разных папок, поэтому, хотя имена папок разные, имена файлов одинаковы:

cat1/cat.jpg
cat2/cat.jpg
cat3/cat.jpg
etc...

Тем не менее, один из этих cat.jpgs на самом деле представляет собой изображение собаки (и файл по-прежнему называется "cat.jpg")

Как мне найти собаку, если у меня есть точная копия? Я не могу выполнить поиск по имени файла, потому что тогда я просто получу 5 миллионов результатов "cat.jpg"

3 ответа3

2

Вот пример использования fc.exe с бинарным флагом сравнения:

for /R "C:\Some Path" %f in (*.jpg) do @(FC /B "C:\Some Other Path Maybe\dog.jpg" "%f" | FIND "FC: no differences encountered.") && echo %f

Это будет рекурсивно пролистывать файлы и папки в C:\Some Path назначая JPEG-файлы %f . FC передаст результаты сравнения с dog.jpg и %f в утилиту сравнения строк FIND .

Если файлы совпадают, вывод из FC будет FC: различий не обнаружено.

&& означает, что echo %f сработает, если эта строка найдена с помощью FIND .

Так что если есть совпадение, вы должны увидеть что-то вроде

FC: no differences encountered.
C:\Some Path\cat5000000\cat.jpg
1

Хотя это и не бинарный поиск, вы могли бы использовать powershell, чтобы хотя бы приблизиться (при условии, что все изображения точно такие же, кроме изображения ...)

https://stackoverflow.com/questions/9552367/get-the-detail-informations-from-a-png-file-in-powershell

В основном, найдите детали, с которыми вам нужно проверить, и затем используйте Powershell для поиска каждого изображения, а затем сравните:

http://technet.microsoft.com/en-us/library/ee156812.aspx

Вы можете использовать сравнить объект, чтобы проверить объект тоже. В любом случае должен работать, но второй способ будет лучше / проще.

0

Если у вас есть его точная копия, когда вы знаете размер файла, вы можете искать cat.jpg size:n.nnKB или, более конкретно, в байтах: cat.jpg size:nB .

Если у вас есть размер файла и вы не знаете его имени, ищите только size:nB тоже должен работать, или, по крайней мере, значительно его сузить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .