Board logo

标题: [数值计算] 请教怎么用批处理生成随机MAC地址? [打印本页]

作者: menqi20    时间: 2011-8-27 01:27     标题: 请教怎么用批处理生成随机MAC地址?

本帖最后由 menqi20 于 2011-8-27 10:54 编辑
  1. set /a mmmm=%random%%%32700+10
  2. set /a mac1=%random%%%5555+1000
  3. set /a mac2=%random%%%6666+1000
  4. set /a mac3=%random%%%4444+1000
  5. echo %mac1%%mac2%%mac3%
  6. reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001 /v
  7. NetworkAddress /d %mac1%%mac2%%mac3% /f
复制代码
上面这样生成随机12位数字,用命令ipconfig/all 发现有时写不进去,请教怎么写才能百分百中,最好能生成字母+数字的随机MAC地址

补充:十进制数0对应十六进制数0,1对1,2-2,3-3,4-4,5-5,6-6,7-7,8-8,9-9,10-A,11-B,12-C,13-D,14-E,15-F
因为MAC地址用的是16进制数,上面的12位数字写不进去,极有可能是生成的数字中包含了10,11,12,13,14,15,系统会把这些数字转换成字母,转换后不足12位,所以写不进去
作者: qc5111    时间: 2011-8-27 01:40

怎么没人啊,那么好的问题,建议直接用a=%random%
给你一个范例
  1. :vip1
  2. cls
  3. set /p af=请输入机器码
  4. if %af%=%mf% goto vip2
  5. echo 机器码错误,请联系QQ:247731705
  6. goto vip1
  7. :vip2
  8. cls
  9. set /p bf=请输入注册码
  10. if %bf%=%nf% goto vip3
  11. echo 注册码错误,请联系QQ:247731705
  12. goto vip2
  13. :vip3
  14. set /a vip=%vip%+1
  15. set ma=%RANDOM%
  16. set mb=%RANDOM%
  17. set mc=%RANDOM%
  18. set md=%RANDOM%
  19. set me=%RANDOM%
  20. set mf=%ma%-%mb%-%mc%-%md%-%me%
  21. set na=%RANDOM%
  22. set nb=%RANDOM%
  23. set nc=%RANDOM%
  24. set nd=%RANDOM%
  25. set ne=%RANDOM%
  26. set nf=%na%-%nb%-%nc%-%nd%-%ne%
  27. set rmb >C:\%UserName%消费记录.dll
  28. set vip >>C:\%UserName%消费记录.dll
  29. set PassWord >>C:\%UserName%消费记录.dll
  30. set mf >>C:\%UserName%消费记录.dll
  31. set nf >>C:\%UserName%消费记录.dll
  32. cls
  33. echo 恭喜,您申请VIP成功,现在为VIP%vip%
复制代码

作者: CUer    时间: 2011-8-27 09:02

回复 2# qc5111


请教一下好在何处?
作者: menqi20    时间: 2011-8-27 10:00

求教中,谢谢!
作者: menqi20    时间: 2011-8-27 10:55

补充:十进制数0对应十六进制数0,1对1,2-2,3-3,4-4,5-5,6-6,7-7,8-8,9-9,10-A,11-B,12-C,13-D,14-E,15-F
因为MAC地址用的是16进制数,上面的12位数字写不进去,极有可能是生成的数字中包含了10,11,12,13,14,15,系统会把这些数字转换成字母,转换后不足12位,所以写不进去
作者: bingxing8000    时间: 2011-8-27 12:27

  1. @echo off&setlocal EnableDelayedExpansion
  2. set a=012345789abcdef
  3. set /a b=%random%%%14+1
  4. set /a c=%random%%%14+1
  5. set /a d=%random%%%14+1
  6. set /a e=%random%%%14+1
  7. set /a f=%random%%%14+1
  8. set /a g=%random%%%14+1
  9. set /a h=%random%%%14+1
  10. set /a i=%random%%%14+1
  11. set /a j=%random%%%14+1
  12. set /a k=%random%%%14+1
  13. set /a l=%random%%%14+1
  14. set /a m=%random%%%14+1
  15. set ab=!a:~%b%,1!!a:~%c%,1!-!a:~%d%,1!!a:~%e%,1!-!a:~%f%,1!!a:~%g%,1!-!a:~%h%,1!!a:~%i%,1!-!a:~%j%,1!!a:~%k%,1!-!a:~%l%,1!!a:~%m%,1!
  16. echo MAC地址为:%ab%
  17. pause >nul
  18. %0
复制代码
楼主看一下是否满足要求?
作者: bingxing8000    时间: 2011-8-27 12:37

高手能把我上面的代码,简化一下吗?
作者: menqi20    时间: 2011-8-27 13:00

完全能满足要求!!!!非常感谢
作者: menqi20    时间: 2011-8-27 13:10

还有个思路是把十进制的数字转换成12个十六进制
作者: funken    时间: 2017-6-28 15:27

在高版本系统上这个还有个BUG,就是mac第二位如果不是26AE会挂。。
于是我改了个
@echo off
:mac
setlocal EnableDelayedExpansion
cls
cls
set a=012345789ABCDEF
set dew=26AE
set /a d2=%random%%%3+1
set /a b=%random%%%14+1
set /a c=%random%%%14+1
set /a d=%random%%%14+1
set /a e=%random%%%14+1
set /a f=%random%%%14+1
set /a g=%random%%%14+1
set /a h=%random%%%14+1
set /a i=%random%%%14+1
set /a j=%random%%%14+1
set /a k=%random%%%14+1
set /a l=%random%%%14+1
set /a m=%random%%%14+1
set ab=!a:~%b%,1!!dew:~%d2%,1!-!a:~%d%,1!!a:~%e%,1!-!a:~%f%,1!!a:~%g%,1!-!a:~%h%,1!!a:~%i%,1!-!a:~%j%,1!!a:~%k%,1!-!a:~%l%,1!!a:~%m%,1!
echo !ab!
pause >nul
%0




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2