使用PowerShell快速测试两个文件内容是否相同

发布于 2024-12-10 06:13:42 字数 426 浏览 1 评论 0原文

作为较大 PowerShell 脚本的一部分,我想测试两个二进制文件的内容是否相同。

我认为以下内容在逻辑上是正确的:

if (@(Compare-Object 
    $(Get-Content f1.txt -encoding byte) 
    $(Get-Content f2.txt -encoding byte) 
    -sync 0).length -eq 0) {
    "same" 
} else {
    "different"
}

但是,上面的运行速度非常慢,因为它实际上使用 Compare-Object 来实现需要更简单的实现的东西。

我正在寻找提供相同逻辑结果的东西,但使用一些更快的低级文件比较。

我不需要或想要任何差异描述,或任何文本输出,只是一个逻辑测试,给我一个布尔结果。

As part of a larger PowerShell script, I want to test whether the contents of two binary files are identical.

I think the following is logically correct:

if (@(Compare-Object 
    $(Get-Content f1.txt -encoding byte) 
    $(Get-Content f2.txt -encoding byte) 
    -sync 0).length -eq 0) {
    "same" 
} else {
    "different"
}

However, the above runs very slowly as it's really using Compare-Object for something that is begging for a much simpler implementation.

I'm looking for something that gives the same logical result, but uses some faster low level file comparison.

I do not need or want any description of the differences, or any text output, just a logical test that gives me a boolean result.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泛泛之交 2024-12-17 06:13:42
if ($(Get-FileHash $fileA).Hash -ne $(Get-FileHash $fileB).Hash) {
  Write-Output "Files $fileA and $fileB aren't equal"
}
if ($(Get-FileHash $fileA).Hash -ne $(Get-FileHash $fileB).Hash) {
  Write-Output "Files $fileA and $fileB aren't equal"
}
我爱人 2024-12-17 06:13:42

如果文件很大,导致比较对象花费很多时间,可以生成SHA1哈希并进行比较。

或者您可以在循环中逐字节读取文件,在第一个不相等的字节处中断。

If the files are large, causing compare-object to take much time, you can generate SHA1 hash and compare it.

Or you can read the files byte-by-byte in a loop, breaking at the first non-equal bytes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文