我正在使用GPG(或7-Zip)来生成文件的哈希值。我想将这些哈希值读取到批处理文件中的变量,以便进一步使用它们。
我的问题是GPG根据路径长度创建了 - 并选择了hashalgo-不同的输出:
SHA256,短路径:
c:\test.txt: E3B0C442 98FC1C14 9AFBF4C8 996FB924 27AE41E4 649B934C A495991B
7852B855
MD5,短路径:
c:\test.txt: D4 1D 8C D9 8F 00 B2 04 E9 80 09 98 EC F8 42 7E
SHA256,长路径:
C:\Folder1\Folder2\Folder3\Testfile-longname.ext1.txt:
764B2054 853B6BCC 919853DD D47F4A3A F5A2DFB1 A5EE6967 52051E1E 12B143CC
当使用CRC32和SHA256作为文件时,7-zip提供以下输出:
7-Zip (a) [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04
Scanning
1 file, 296533469 bytes (283 MiB)
CRC32 SHA256 Size Name
-------- ---------------------------------------------------------------- ------------- ------------
BB280EC2 22B8AB1B1AD2F04A47BFD409997A834B30C617B619522381123B7D2AD8F724F9 123456789 Testfile-longname.ext1.txt
-------- ---------------------------------------------------------------- ------------- ------------
BB280EC2 22B8AB1B1AD2F04A47BFD409997A834B30C617B619522381123B7D2AD8F724F9 296533469
Size: 123456789
CRC32 for data: BB280EC2
SHA256 for data: 22B8AB1B1AD2F04A47BFD409997A834B30C617B619522381123B7D2AD8F724F9
不幸的是我无法对路径长度和hashalgo进行任何预测,但我可以说使用了哪个程序(GPG或7-zip)。
我在for / f的delim和tokens中尝试了各种设置但是在7-zip输出中无法在GPG输出和CRC32(以及可能是SHA256)中可靠地捕获MD5和SHA256。
感谢您的帮助!
澄清: 使用GPG我有不同输出格式的问题,我无法得到校验和。 当使用7-ZIP时,我可以从输出的大(不重要)部分中提取校验和。
答案 0 :(得分:1)
有关您提供的输出示例,请尝试以下操作:
for /f "tokens=1,2,3,4 delims=: " %a in ('type foobar.txt ^| findstr "data"') do echo %d
其中foobar.txt包含命令的输出,您可以使用命令替换类型foobar.txt。