Board logo

标题: [已解决]先MD5,再Base64,最后ECHO输出,怎么写方便? [打印本页]

作者: ec2049     时间: 2007-1-23 04:33    标题: [已解决]先MD5,再Base64,最后ECHO输出,怎么写方便?

对text先MD5,再Base64,最后ECHO输出:
@echo off
color 0a
cls
set /p text="字符串:"
FOR %%b IN ("echo %text%|md5") DO (
        echo %%b|base64>temp.txt
)
more temp.txt
del/a/f/s/q temp.txt
pause
我不知道怎么用set写,专门输出一个txt很不爽啊…

这是使用的外部工具:
http://zhenlove.com.cn/cndos/fileup/files/md5.zip
http://zhenlove.com.cn/cndos/fileup/files/base64.zip

[ Last edited by ec2049 on 2007-1-23 at 07:46 AM ]
作者: redtek     时间: 2007-1-23 06:05
不生成临时文件的方法:
@echo off && setlocal


set /p var=字符串:
for /f %%. in ('echo %var%^|md5') do ( echo %%.|base64 )


Pause
(下面是分析过程,没用)


本来想 Echo %字符串%|md5|base64 直接就输出处理过的字符串。
结果发现这个 md5.exe 工具的作者真是有意思,非得在 md5 值的后面再加上个处理的是谁(文件名或是管道过来的源)这问题影响了连续管理操作。
不然连 for 都不要了,一行搞定。

  Quote:
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==


作者: ec2049     时间: 2007-1-23 07:46
谢谢~问题已解决:-)

晕...
http://www.cn-dos.net/forum/viewthread.php?tid=27000

[ Last edited by ec2049 on 2007-1-23 at 08:13 AM ]
作者: vkill     时间: 2007-1-23 09:05
才发现base64这个东西挺好的,呵呵