最近一直在学习批处理,自己写了个双色球随机算号器,但总感觉不太舒服,写出来大家看看,希望大家多提建议,给予斧正。
本代码能完全模拟双色球摇奖程序,随机得到号码,再将代码进行排序,并支持多次重复摇号,并将不同的摇号结果写入到“必中.txt”中,你也可以自己选出一部分号码进行摇号,如果不输入初选号码,将默认所有的号码为你的预选号进行摇号。下面是批处理做双色球随机算号器的P代码:- @echo off&setlocal Enabledelayedexpansion&mode con: cols=45 lines=18&color 0e
- :KaiShi
- cls&set /a nu=0&set shu=
- echo.&echo ●●●双色球摇奖器●●●&echo.&echo 请输入你的预选号码,用逗号隔开!&echo.&echo 如果输入为空,将默认所有的号码为你的预选号!&echo.
- set /p shu=你的号码:
- if not "%shu%"=="" goto ZI
- set shu=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33
- :ZI
- set Hao=%shu%
- echo 你输入的预选号码:【%Hao%】>必中.txt&echo.>>必中.txt
- for %%i in (%shu%) do set /a nu+=1
- if %nu% lss 6 cls&cls&echo.&echo ●●●双色球摇奖器●●●&echo.&echo 你输入的号码是:【%Hao%】&echo.&echo 输入的号码不能少于6个,按任意键重新输入!&pause>nul&goto KaiShi
- for %%i in (%shu%) do if %%i lss 17 goto XHp
- cls&echo.&echo ●●●双色球摇奖器●●●&echo.&echo 你输入的号码是:【%Hao%】&echo.&echo 输入的号码中至少要有一个小于17!&echo.&echo 按任意键重新输入!&pause>nul&goto KaiShi
- :XHp
- for %%i in (%shu%) do if %%i GTR 33 cls&echo.&echo ●●●双色球摇奖器●●●&echo.&echo 你输入的号码是:【%Hao%】&echo.&echo 有没有搞错?双色球有大于33的号???,按任意键重新输入!&pause>nul&goto KaiShi
- for %%a in (%shu%) do if 1%%a lss 20 (set shu0=!shu0!,0%%a) else set shu0=!shu0!,%%a
- set shu0=%shu0:~1%&set shu=%shu0%
- set /a o=0&set /a v=0
- :XH2
- set Qian=%Shu%&set /a n=0&set /a nu=0
- for %%i in (%shu%) do set /a nu+=1
- :XH
- set /a Rui=%random%%%nu%+1
- if %Rui% geq 31 Goto TT
- for /f "tokens=%Rui% delims=," %%i in ("%Qian%") do set f%n%=%%i&set "Qian=!Qian:%%i=!"&set "Qian=!Qian:,,=,!"
- set /a nu-=1&set /a n+=1
- if %n% LSS 6 goto XH
- Goto PP
- :TT
- set /a G=Rui-30
- for /f "tokens=30* delims=," %%i in ("%Qian%") do (
- for /f "tokens=%G% delims=," %%i in ("%%j") do set f%n%=%%i&set "Qian=!Qian:%%i=!"&set "Qian=!Qian:,,=,!"
- )
- set /a nu-=1&set /a n+=1
- if %n% LSS 6 goto XH
- :PP
- set HM=%f0% %f1% %f2% %f3% %f4% %f5%
- set Xiao=%shu%
- for %%i in (%Xiao%) do if %%i GTR 16 set "Xiao=!Xiao:%%i=!"&set "Xiao=!Xiao:,,=,!"
- set /a nx=0
- for %%i in (%Xiao%) do set /a nx+=1
- set /a Rui=%random%%%nx%+1
- for /f "tokens=%Rui% delims=," %%a in ("%Xiao%") do set f6=%%a
- set /a v+=1
- cls&echo.&echo ●●●双色球摇奖器●●●&echo.&echo 第%v%次摇出的号码:&echo.&echo 摇出的号码:%HM% + %f6%&echo.
- set "m="
- (for %%j in (%HM%)do (set b=%%j&set "s="
- for %%i in (!m!)do (if %%j gtr %%i (
- set s=!s! %%i)else set s=!s! !b! %%i&set b=)
- set "m=!s! !b! "))&set "m=!m: = !"
- set HM1=!m:~1,-1!
- echo 排序后的号码:%HM1% + %f6%&echo.&echo.&echo.&echo 按任意键重摇...&echo.&echo 结果保存在“必中.txt”中。&echo 排序后号码相同的将不保存。
- for /f "delims=" %%b in ('type "必中.txt"^|find /i "排序后的号码:%HM1% + %f6%"') do goto bubaoc
- set /a o+=1
- echo 第%v%次摇出第%o%次写入的号码:>>必中.txt&echo 摇出的号码:%HM% + %f6%>>必中.txt&echo 排序后的号码:%HM1% + %f6%>>必中.txt&echo.>>必中.txt
- :bubaoc
- pause>nul&goto XH2
复制代码
|