Используйте PowerShell для быстрой проверки идентичности содержимого двух файлов. - PullRequest
4 голосов
/ 17 октября 2011

В рамках более крупного сценария 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 для чего-то, что требует намного более простой реализации.

Я ищу что-то, что дает тот же логический результат, но использует более быстрое сравнение файлов низкого уровня.

Мне не нужно или не нужно никакого описания различий или какого-либо текстового вывода, просто логический тест, который дает мне логический результат.

Ответы [ 2 ]

3 голосов
/ 17 октября 2011

Если файлы имеют большой размер, что приводит к тому, что объект сравнения занимает много времени, вы можете сгенерировать хэш SHA1 и сравнить его.

Или вы можете читать файлы побайтно в цикле, прерывая напервые неравные байты.

1 голос
/ 26 декабря 2018
if ($(Get-FileHash $fileA).Hash -ne $(Get-FileHash $fileB).Hash) {
  Write-Output "Files $fileA and $fileB aren't equal"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...