[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程批处理在线视频分享
返回列表 发帖

[其他] 批处理点名器为何只能点31个人?求帮助

一个点名器,但是只能点31个人,不知道怎么办
求大佬们指导一下,修改一下最好了
救救孩子!

我把代码放下面
  1. @echo off
  2. title 点名软件
  3. echo 请将名单写在同目录下 名单.txt,写在一行,用中文逗号(,)隔开
  4. echo
  5. if not exist "名单.txt"  echo 小张,小王,小李,小刘>名单.txt
  6. pause
  7. cls
  8. REM 启用延迟环境变量扩展
  9. setlocal enabledelayedexpansion
  10. :: 统计个数
  11. call :_get_count
  12. :: 生成随机变量 $n$
  13. for /l %%i in (1,1,%nCount%) do (
  14.   call :_rnd %%i
  15. )
  16. :: 随机点名,每个人只点一次
  17. echo 点名开始!
  18. for /l %%i in (1,1,%nCount%) do (
  19.   REM 从随机变量中读取值
  20.   for /f "delims=??" %%j in ('echo,!$%%i$!') do (set/p p=!$%%i$![%%i/%nCount%].  !#%%j#!  <nul)
  21.   pause
  22. )
  23. echo 点名结束!
  24. pause
  25. goto :eof
  26. :: 统计个数,生成升序变量 #n#
  27. goto :eof
  28. :_get_count
  29. set/a nCount=1
  30. :_count
  31.   for /f "delims=, tokens=%nCount%" %%i in (名单.txt) do (
  32.     set/a nCount=%nCount% + 1
  33.     REM add env $$
  34.     set "#%nCount%#=%%~i"
  35.     echo %nCount%. %%~i
  36.     goto :_count
  37.   )
  38.   set/a nCount=%nCount% - 1
  39.   goto :eof
  40.   
  41. :: 生成随机变量 $n$
  42. goto :eof
  43. :_rnd
  44.   set/a min=1
  45.   set/a max=%nCount%
  46.   set/a num=(%random%) %% (%max% - %min% + 1) + %min%
  47.   if defined $%num%$ goto :_rnd
  48.   REM add env ##
  49.   set $%num%$=%1
  50.   goto :eof
复制代码

【扫描二维码捐助论坛的朋友请留言注明论坛账号】http://bbs.bathome.net/thread-10403-1-1.html
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

TOP

如果觉得超过31列不好处理,建议修改一下代码逻辑:
请将名单写在同目录下 名单.txt,每个名字一行
【扫描二维码捐助论坛的朋友请留言注明论坛账号】http://bbs.bathome.net/thread-10403-1-1.html
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

TOP

返回列表