不生成临时文件的方法:
@echo off && setlocal
set /p var=字符串:
for /f %%. in ('echo %var%^|md5') do ( echo %%.|base64 )
Pause
(下面是分析过程,没用)
本来想 Echo %字符串%|md5|base64 直接就输出处理过的字符串。
结果发现这个 md5.exe 工具的作者真是有意思,非得在 md5 值的后面再加上个处理的是谁(文件名或是管道过来的源)这问题影响了连续管理操作。
不然连 for 都不要了,一行搞定。
C:\TEMP\M MD5>echo Redtek|md5
44857CF177B0D2EF4F7A909770F5263E -
(上面多了个“-”源,如果是 md5.exe <文件名, 那么md5值后面就是这个文件名。)
C:\TEMP\M MD5>echo 44857CF177B0D2EF4F7A909770F5263E|base64
NDQ4NTdDRjE3N0IwRDJFRjRGN0E5MDk3NzBGNTI2M0UNCg==
(上面的值是正确的)
C:\TEMP\M MD5>
(下面这个连续管道操作出来的值就错误的,因为 md5 处理完后非得后面加上个“源”,结果多出的这个 "-" 又被 Base64编辑了:(
(所以,连续管道操作出来的值就是错误的)
C:\TEMP\M MD5>echo Redtek|md5|base64
NDQ4NTdDRjE3N0IwRDJFRjRGN0E5MDk3NzBGNTI2M0UgIC0NCg==