在 Windows 8 上进行二进制文件搜索?

在 Windows 8 上进行二进制文件搜索?

我的情况很奇怪。我需要根据文件内容来查找文件,而不是根据名称,因为名称不是唯一的……

例如,我有一个名为“cat.jpg”的文件。这是一张猫的图片。我恰好在 500 万个不同的文件夹中有 500 万份此图片的副本,因此,虽然文件夹名称不同,但文件名相同:

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

然而,其中一个 cat.jpg 实际上是一张狗的图片(文件仍名为“cat.jpg”)

假设我有一张狗的图片,我该如何找到它呢?我无法进行文件名搜索,因为这样我只会得到 500 万个“cat.jpg”的结果

答案1

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 PathJPEG 分配给%fFC将比较的输出通过dog.jpg和管道传输%f到字符串比较实用程序FIND

如果文件匹配,则输出FCFC:未发现任何差异。

将会开火&&的手段echo %f如果该字符串是由 找到的FIND

如果有匹配项,你应该看到类似

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

答案2

虽然不是二进制搜索,但您可以使用 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

您也可以使用 compare-object 来检查对象。两种方法都可以,但第二种方法更好/更简单。

答案3

如果您有它的精确副本,一旦您知道文件大小,您就可以搜索cat.jpg size:n.nnKB,或者更具体地以字节为单位:cat.jpg size:nB

如果您知道文件大小但不知道名称,则搜索也size:nB应该可以正常工作,或者至少可以大大缩小范围。

相关内容