[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 请教怎么用批处理生成随机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位,所以写不进去

在高版本系统上这个还有个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

TOP

还有个思路是把十进制的数字转换成12个十六进制

TOP

完全能满足要求!!!!非常感谢

TOP

高手能把我上面的代码,简化一下吗?
赞成“拿来主义”,但是鄙视“伸手党”

TOP

  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
复制代码
楼主看一下是否满足要求?
赞成“拿来主义”,但是鄙视“伸手党”

TOP

补充:十进制数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位,所以写不进去

TOP

求教中,谢谢!

TOP

回复 2# qc5111


请教一下好在何处?

TOP

怎么没人啊,那么好的问题,建议直接用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%
复制代码

TOP

返回列表