使用PowerShell快速测试两个文件内容是否相同
作为较大 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果文件很大,导致比较对象花费很多时间,可以生成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.