[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. ::测试环境Win7
  2. @echo off
  3. SetLocal EnableDelayedExpansion
  4. call :SetAscVar
  5. ::获取硬盘序列号(16进制)。可能有多块硬盘,显示中字母行“SerialNumber”,还有2行空行,需要先处理。
  6. for /f %%x in ('"wmic diskdrive get serialnumber|find " "|find /v /i "SerialNumber""')do (
  7. if not "%%x"=="" (
  8. set/adn+=1
  9. echo 硬盘!dn!:
  10. call :Ascii4Sn ASN %%x
  11. echo 16进制序列号:%%x
  12. echo  硬盘序列号:!ASN!
  13. echo\
  14. )
  15. )
  16. pause
  17. set sn=32535554574e4741314134313532204a20202020
  18. call :Ascii4Sn ASN %sn%
  19. echo 16进制序列号:%sn%
  20. echo  硬盘序列号:%ASN%
  21. pause
  22. goto :eof
  23. ::函数
  24. :SetAscVar //定义数字和字母的ASCII变量,需要先调用
  25. set Num=0123456789
  26. set Abc=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  27. set Hex=%Num%%Abc:~,6%
  28. for /l %%i in (0 1 9)do set _0x3%%i=%%i
  29. for /l %%i in (0 1 26)do call :AbcAsc %%i
  30. goto :eof
  31. :AbcAsc <offset> //定义26个字母对应的ASCII变量
  32. set/a Asc=0x41+%1,h=Asc/16,e=Asc%%16
  33. set _0x!Hex:~%h%,1!!Hex:~%e%,1!=!Abc:~%1,1!
  34. set/a as1=0x61+%1,h=as1/16,e=as1%%16
  35. set _0x!Hex:~%h%,1!!Hex:~%e%,1!=!Abc:~%1,1!
  36. goto :eof
  37. :Ascii4Sn <str_var> <hexs> //回传变量,长串16进制数
  38. set hsn=%2
  39. set ns=
  40. set as=
  41. :ASloop
  42. set ns=%ns%%hsn:~2,2%%hsn:~,2%
  43. set as=%as%!_0x%hsn:~2,2%!!_0x%hsn:~,2%!
  44. set hsn=%hsn:~4%
  45. if not "%hsn%"=="" goto :ASloop
  46. set %1=%as%
  47. goto :eof
复制代码
如无特别说明,代码测试环境均为 XP SP3

TOP

返回列表