如何让md5sum命令批量只显示无路径的hash值?

How to make md5sum command to show only hash value without a path in batch?

我有以下代码来检查我的图像的 md5sum:

for /f "delims=" %%i in ('md5sum U:/imagingusb/%UserInputPath%/Image/usbimage.iso') do set output=%%i
for /f "delims=" %%i in ('md5sum /dev/sdb1') do set outputusb=%%i
echo %output%
echo %outputusb%

我得到的输出是:

9a4a227e872f7130652f403c568d0081 */dev/sdb1
9a4a227e872f7130652f403c568d0081 *U:/imagingusb/dfgg/Image/usbimage.iso

如何只输入哈希值而不输入我的 ISO 映像的路径? 就是这样:

9a4a227e872f7130652f403c568d0081 
9a4a227e872f7130652f403c568d0081

默认情况下,for 循环标记空格和制表符上的输出。如果您不指定 return 的令牌,您将只能使用第一个(for /f %%A in ("this is a string") do echo %%A returns thisecho %%B returns %B 而不是 is).

要单独获取 md5 校验和,您只需删除代码中的 "delims="

for /f %%i in ('md5sum U:/imagingusb/%UserInputPath%/Image/usbimage.iso') do set output=%%i
for /f %%i in ('md5sum /dev/sdb1') do set outputusb=%%i
echo %output%
echo %outputusb%

如果您出于任何原因需要将路径用于其他用途,您可以将它们存储在单独的令牌中(在本例中,%%j),如下所示:

for /f "tokens=1,*" %%i in ('md5sum U:/imagingusb/%UserInputPath%/Image/usbimage.iso') do set output=%%i
for /f "tokens=1,*" %%i in ('md5sum /dev/sdb1') do set outputusb=%%i
echo %output%
echo %outputusb%