Powershell 对md5sum命令生成的校验和文件使用--check失败

Powershell 对md5sum命令生成的校验和文件使用--check失败,powershell,cygwin,md5sum,Powershell,Cygwin,Md5sum,当我尝试对生成的校验和文件运行md5sum-c时,遇到了一个错误。我应该提到的是,我正在从PowerShell运行这个程序(最终会有一个脚本运行这个程序),这是md5sum的cygwin版本 我有一个测试文件,jira_defect.txt,我创建了如下校验和: md5sum jira_defect.txt > result.md5 这将提供一个包含以下内容的文件: 7d559b59459052f274e290b5e01a5485 *jira_defect.txt 但是当我跑的时候 m

当我尝试对生成的校验和文件运行
md5sum-c
时,遇到了一个错误。我应该提到的是,我正在从PowerShell运行这个程序(最终会有一个脚本运行这个程序),这是
md5sum
的cygwin版本

我有一个测试文件,
jira_defect.txt
,我创建了如下校验和:

md5sum jira_defect.txt > result.md5
这将提供一个包含以下内容的文件:

7d559b59459052f274e290b5e01a5485 *jira_defect.txt
但是当我跑的时候

md5sum -c result.md5
我收到了臭名昭著的错误信息

result.md5:未找到格式正确的md5校验和行


我用
-t
选项再次尝试了这一点,该选项删除了星号,但没有产生任何影响。

使用重定向操作符将校验和写入输出文件会导致使用默认编码(Unicode)创建文件
md5sum
需要一个ASCII文件。使用
设置内容
(或
输出文件
)以ASCII编码保存文件:

md5sum jira_defect.txt | Set-Content result.md5 -Encoding ASCII
如果将Unicode文件的内容导入
md5sum
,也可以使用Unicode文件:

Get-Content result.md5 | md5sum -c
演示:

PS C:\> md5sum .\test.ps1 > result.md5
PS C:\> md5sum -c .\result.md5
C:\md5sum.exe: .\result.md5: no properly formatted MD5 checksum lines found
PS C:\> Get-Content .\result.md5 | md5sum -c
.\test.ps1: OK
PS C:\> md5sum .\test.ps1 | Set-Content result.md5 -Encoding ASCII
PS C:\> md5sum -c .\result.md5
.\test.ps1: OK
PS C:\>md5sum。\test.ps1>result.md5
PS C:\>md5sum-C.\result.md5
C:\md5sum.exe:。\result.md5:未找到格式正确的md5校验和行
PS C:\>获取内容。\result.md5 | md5sum-C
.ps1:好的
PS C:\>md5sum。\test.ps1 | Set Content result.md5-编码ASCII
PS C:\>md5sum-C.\result.md5

.\test.ps1:OK
结果.md5文件上的行尾有什么区别吗?看起来它们有不同的行尾,是的。那一定是给我的。至少根据WinMerge的说法,PowerShell md5文件是UCS-2/Win,命令提示符文件是1252/Unix。如果您将其作为答案,我将标记为已回答。编码当然是另一种可能性。我不是在说这个,但如果powershell编写了一个UTF-16文件,而md5sum没有预料到这一点,那么肯定会有问题。找出一个解决方案(保存到变量并使用集合内容或类似内容?),然后自己写下来作为答案。我没有提出完整解决方案的背景。