标题: [数值计算] 请教怎么用批处理生成随机MAC地址? [打印本页]
作者: menqi20 时间: 2011-8-27 01:27 标题: 请教怎么用批处理生成随机MAC地址?
本帖最后由 menqi20 于 2011-8-27 10:54 编辑
- set /a mmmm=%random%%%32700+10
- set /a mac1=%random%%%5555+1000
- set /a mac2=%random%%%6666+1000
- set /a mac3=%random%%%4444+1000
- echo %mac1%%mac2%%mac3%
-
- reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001 /v
- 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%
给你一个范例- :vip1
- cls
- set /p af=请输入机器码
- if %af%=%mf% goto vip2
- echo 机器码错误,请联系QQ:247731705
- goto vip1
- :vip2
- cls
- set /p bf=请输入注册码
- if %bf%=%nf% goto vip3
- echo 注册码错误,请联系QQ:247731705
- goto vip2
- :vip3
- set /a vip=%vip%+1
- set ma=%RANDOM%
- set mb=%RANDOM%
- set mc=%RANDOM%
- set md=%RANDOM%
- set me=%RANDOM%
- set mf=%ma%-%mb%-%mc%-%md%-%me%
- set na=%RANDOM%
- set nb=%RANDOM%
- set nc=%RANDOM%
- set nd=%RANDOM%
- set ne=%RANDOM%
- set nf=%na%-%nb%-%nc%-%nd%-%ne%
- set rmb >C:\%UserName%消费记录.dll
- set vip >>C:\%UserName%消费记录.dll
- set PassWord >>C:\%UserName%消费记录.dll
- set mf >>C:\%UserName%消费记录.dll
- set nf >>C:\%UserName%消费记录.dll
- cls
- 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
- @echo off&setlocal EnableDelayedExpansion
- set a=012345789abcdef
- 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!!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!
- echo MAC地址为:%ab%
- pause >nul
- %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://www.bathome.net/) |
Powered by Discuz! 7.2 |