在 Windows 中如何验证两个复制的文件是否完全相同?

在 Windows 中如何验证两个复制的文件是否完全相同?

我正在对运行 Windows 7 Home Starter Edition 的三星 rv420 进行备份。

为了做到这一点,我希望确保在将文件从我的计算机复制到外部设备时,所复制的文件不会发生丝毫变化。为此,我将执行以下步骤:我将从我的计算机中取出一个文件,将其复制到外部设备中,然后再将其从外部设备复制到计算机。因此,文件已“传输”到设备中,我想知道它是否已更改。

我对哈希函数知之甚少。我有一个程序叫文件菜单工具其中包括一个用于计算几种不同哈希算法的函数。我希望该程序能够正常工作。

我对文件进行了上述操作,逻辑上,最终得到了两个文件,一个是原件,另一个是我留在桌面上的副本。我计算了哈希函数,结果不一样。

我不知道这是为什么。哈希值会根据文件所在的目录而变化?

您能建议我做什么来实现我的愿望,即检查文件在经过外部设备传输后是否完全相同?

答案1

Windows 的原生解决方案(无需下载第三方)是使用一些 powershell 命令。

打开 powershell.exe(以用户或管理员身份)。然后,使用以下命令。

Compare-Object "$(Get-Content $PATH1)" "$(Get-Content $PATH2)"

您可以设置文件$PATH1路径$PATH2并复制粘贴上述命令。

如果它不返回任何内容,则文件在内容,我相信这正是您想要的。请注意,此命令不会检查是否具有相同的权限、相同的修改日期等。要比较相同的修改日期和模式,请使用以下命令。

Compare-Object "$(Get-ItemProperty $PATH1 | Select-Object Mode, LastWriteTime)" "$(Get-ItemProperty $PATH2 | Select-Object Mode, LastWriteTime)"

要比较权限,请使用以下命令。

Compare-Object "$(Get-Acl $PATH1).Access" "$(Get-Acl $PATH2).Access"

再次,您可以设置$PATH1$PATH2复制并粘贴上面的命令。

在这三个命令中,如果它返回了某些内容,您就知道它们是不一样的。另一方面,如果它什么都不返回,您就知道它们在内容(第一个命令)、上次写入时间和模式(第二个命令)和权限(第三个命令)方面完全相同。

答案2

在 Powershell 中,您可以轻松计算两个文件的文件哈希值并进行比较

> Get-FileHash -Algorithm SHA256 .\file1.exe
> Get-FileHash -Algorithm SHA256 .\file2.exe

相关内容