batch-file - 如何让计算机在人而不是数字之间随机选择并且只显示一次?
问题描述
我想让计算机在人之间而不是数字之间进行选择,然后从列表中删除该名称,但我不知道我是否可以批量处理。我知道如何让它选择一个数字,但我想将人们分配给一个数字并随机分配。我还需要它才能不再打印那个人的名字,但这也超出了我的范围。这就是我所拥有的:
:main
@echo off
SET /A test=%RANDOM% * 10 / 32768 + 1
set /a Susan=1
set /a Jeff=2
set /a Nicole=3
set /a Eric=4
set /a Craig=5
set /a Jennifer=6
set /a Haley=7
set /a Ethan=8
set /a Lois=9
set /a Ann=10
echo %test%
echo.
pause
cls
goto main
解决方案
尝试这个..
@echo off & setlocal EnableDelayedExpansion
set "_1=Susan"
set "_2=Jeff"
set "_3=Nicole"
set "_4=Eric"
set "_5=Craig"
set "_6=Jennifer"
set "_7=Haley"
set "_8=Ethan"
set "_9=Lois"
set "_10=Ann"
:main
cls & echo/ & set "test="
set /a "test=!RANDOM!*10/32768+1"
echo/ !_%test%! & pause && goto :main
要删除列表中的名称并防止重复:
@echo off & setlocal EnableDelayedExpansion
set "_1=Susan"
set "_2=Jeff"
set "_3=Nicole"
set "_4=Eric"
set "_5=Craig"
set "_6=Jennifer"
set "_7=Haley"
set "_8=Ethan"
set "_9=Lois"
set "_10=Ann"
:main
echo/ & set "test="
cls & set /p _!test!=<nul
set /a "test=!RANDOM!*10/32768+1"
if defined _!test! (
echo/!_%test%! & pause
set "_%test%=" && goto :main
) else (
2>nul set _ |findstr \_[0-9]\= >nul && goto :main
endlocal & exit /b
)
推荐阅读
- ssl - 访问 asmx 服务抛出错误无法为具有权限的 SSL/TLS 建立安全通道 - 虽然可以从 SOAPUI 工作
- performance - 提高 Haskell 中递归的效率
- parallel-processing - Julia 中的并行计算——在多核上运行一个简单的 for 循环
- javascript - 如何在 JavaScript 中处理 Object.prototype
- database - 在批处理模式下使用 Alembic 更改 sa.Column 可为空的属性
- python - Scipy Minimize - 无法最小化目标函数
- javascript - 调试石头剪刀布游戏?Javascript
- html - 将标题固定到屏幕顶部
- printf - 如何处理传递的 sh var 中带有空格的多个参数?
- swift - FetchedResultsController 使用谓词排除集合中包含的结果