标题: [其他] 批处理点名器为何只能点31个人?求帮助 [打印本页]
作者: 1035390697 时间: 2018-12-6 12:27 标题: 批处理点名器为何只能点31个人?求帮助
一个点名器,但是只能点31个人,不知道怎么办
求大佬们指导一下,修改一下最好了
救救孩子!
我把代码放下面- @echo off
- title 点名软件
-
- echo 请将名单写在同目录下 名单.txt,写在一行,用中文逗号(,)隔开
- echo
- if not exist "名单.txt" echo 小张,小王,小李,小刘>名单.txt
- pause
- cls
-
- REM 启用延迟环境变量扩展
- setlocal enabledelayedexpansion
-
- :: 统计个数
- call :_get_count
-
- :: 生成随机变量 $n$
- for /l %%i in (1,1,%nCount%) do (
- call :_rnd %%i
- )
-
- :: 随机点名,每个人只点一次
- echo 点名开始!
- for /l %%i in (1,1,%nCount%) do (
- REM 从随机变量中读取值
- for /f "delims=??" %%j in ('echo,!$%%i$!') do (set/p p=!$%%i$![%%i/%nCount%]. !#%%j#! <nul)
- pause
- )
- echo 点名结束!
- pause
- goto :eof
-
-
- :: 统计个数,生成升序变量 #n#
- goto :eof
- :_get_count
- set/a nCount=1
- :_count
- for /f "delims=, tokens=%nCount%" %%i in (名单.txt) do (
- set/a nCount=%nCount% + 1
- REM add env $$
- set "#%nCount%#=%%~i"
- echo %nCount%. %%~i
- goto :_count
- )
- set/a nCount=%nCount% - 1
- goto :eof
-
-
- :: 生成随机变量 $n$
- goto :eof
- :_rnd
- set/a min=1
- set/a max=%nCount%
- set/a num=(%random%) %% (%max% - %min% + 1) + %min%
- if defined $%num%$ goto :_rnd
- REM add env ##
- set $%num%$=%1
- goto :eof
复制代码
作者: Batcher 时间: 2018-12-6 14:49
http://bbs.bathome.net/thread-12500-1-1.html
http://bbs.bathome.net/thread-5548-1-1.html
阅读一下这两篇文章
作者: Batcher 时间: 2018-12-6 14:50
如果觉得超过31列不好处理,建议修改一下代码逻辑:
请将名单写在同目录下 名单.txt,每个名字一行
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |