如何检查随机数是否在CMD中的两个数字之间?

Ale*_*lex 0 math cmd batch-file

嗨,我是批处理编程的新手,我想知道你如何检查随机nubmer是否在两个数字之间!

@echo off

set /a num = %random%
if %num% == 0-8191 goto o1
if %num% == 8191-16382 goto o2
if %num% == 16382-24573 goto o3
if %num% == 24573-32764 goto o4

:o1
msg * 1
goto end

:o2
msg * 2
goto end

:o3
msg * 3
goto end

:o4
msg * 4
goto end


:end
pause
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么,如果你有更好的版本,请随时表明:D

谢谢

MC *_* ND 7

The Dark Canuck的代码回答了问题的比较部分

对于问题的"更好"部分

set /a "num=%random% %% 4 + 1"
goto o%num%
Run Code Online (Sandbox Code Playgroud)


The*_*uck 5

你的逻辑错了.%num%== 0-8191将从0减去8191,得到-8191并将其与num进行比较.没有任何一个被触发,你将会落到o1.

做这样的事情你可能会更好:

if %num% LEQ 8191 goto o1
if %num% LEQ 16382 goto o2
if %num% LEQ 24573 goto o3
if %num% LEQ 32764 goto o4
Run Code Online (Sandbox Code Playgroud)

这将检查num是否小于或等于给定的数字,并转到相应的标签.由于值按递增顺序排列,因此您无需检查下限 - 如果%num%介于16382和8191之间,则第一次检查失败,第二次检查失败,跳过余数.

有关比较运算符的信息,请参阅此问题.