我正在我们的 linux 机器上执行一些非常简单的校验和,但我现在需要为我们的 Windows 用户重新创建类似的东西。为了给我一个校验和,我只运行:
md5sum *.txt | awk '{ print $1 }' | md5sum
我正在努力在 Windows 中使用批处理文件或 Powershell 重新创建它。我得到的最接近的是:
Get-ChildItem $path -Filter *.txt |
Foreach-Object {
$hash = Get-FileHash -Algorithm MD5 -Path ($path + "\" + $_) | Select -ExpandProperty "Hash"
$hash = $hash.tolower() #Get-FileHash returns checksums in uppercase, linux in lower case (!)
Write-host $hash
}
这会将每个文件的校验和结果与 linux 命令打印到控制台相同,但是通过管道将其返回到 Get-FileHash 以获得与 linux 等效项匹配的单个输出,这让我望而却步。写入文件让我陷入了回车差异
作为字符串流回 Get-FileHash 不会返回相同的校验和:
$String = Get-FileHash -Algorithm MD5 -Path (Get-ChildItem -path $files -Recurse) | Select -ExpandProperty "Hash"
$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write($stringAsStream)
Get-FileHash -Algorithm MD5 -InputStream $stringAsStream
我是否过度设计了这个?我相信这不应该这么复杂!TIA