проверить контрольные суммы MD5 из файла md5 в Windows

Надеюсь, простой вопрос: эквивалентна ли простая командная строка Windowsmd5sum --check [files.md5]существовать? В качестве альтернативы я могу написать сценарий в виде командного файла.

Я могу нормально сгенерировать файл хэшей, но проверка в месте назначения по сравнению с файлом md5 оказывается сложной задачей. Бонусные баллы, если можно запустить в пакетном файле, а не в PowerShell (нужно попытаться создать что-то относительно простое, чтобы пользователь мог запускать его регулярно).

Большое спасибо!

1 ответ

Powershell — ваш друг. Вы можете запустить это с помощью оболочки CMD/BAT, чтобы просто запустить для них скрипт.

      clear-host
$sourcemd5 = get-content C:\temp\cp053854.md5

cd C:\Temp
foreach ($datarow in $sourcemd5){
    # try this to replace mutli spaces with single. uses regex
    $datarow = $($datarow -replace '\s+', ' ')
    $dlhash = $null
    $currentFileHash = $null
    $currentFileName = $null
    #use the first (0) token found (hash value)
    $currentFileHash = ($datarow.Split(" "))[0]
    #use the second (1) token found (filename value)
    $currentFileName = ($datarow.Split(" "))[1]
    #$currentFileName check if has leading asterisk*.
    if ($currentFileName -match "\*"){
        #remove it
        $currentFileName = $currentFileName.Trim("\*")
    }
    
    # Generate an MD5 of the filesystem file
    $dlhash = get-filehash $currentFileName -Algorithm MD5
    #set the generated hash value as string for comparison to the text file.
    [string]$dlhashstr = $dlhash.Hash
    write-output "checking file                   [$currentfileName]"
    write-output "downloaded file hash            [$dlhashstr]"
    write-output "hash value should be            [$currentFileHash]"
    #perform a case insensitive comparison if MD5file uses caps or not. 
    if ($dlhashstr -eq $currentFileHash){
    write-output "File hashes correctly match up  [$currentFileName]"
    }else{
    Write-Warning "MD5 checksum mismatch  [$currentFileName]"
    }
}
Другие вопросы по тегам