@echo off&setlocal enabledelayedexpansion
set/a n=%random%%%11+1
for /f "delims=" %%i in (CDK.TXT) do (
set /a m+=1
if !m! equ %n% set "str=%%i"
)
echo %str%
pause
应楼主的意思逐句解释如下:
@echo off&setlocal enabledelayedexpansion关闭所有回显(包括echo本身),然后开启变量延迟,注意开启变量延迟是为了后面变量m的逐步赋值做准备。
set/a n=%random%%%11+1取得1-11间的随机数值(因cdk.txt的行数为1-11行),注意set/a n=%random%%%11取得的随机数值是0-10之间的,后面的+1则是把前面的值取到1-11间。
for /f "delims=" %%i in (CDK.TXT) do ( set /a m+=1 if !m! equ %n% set "str=%%i")是运用for命令对cdk.txt中所有行进行比对,比对一行给变量m的赋值加1,当m值累加到前面取到的n值大小时就将刚刚比对完的行赋值给变量str,也就是随机取cdk.txt中一行赋值给str,注意在这里%m%必须写成!m!不然m值将永远为空。
也就粗略地解释到此吧,希望能给楼主以帮助。