如何让批处理从0到5中选择一个随机数?

时间:2017-11-15 22:59:51

标签: windows batch-file cmd

首先,感谢您阅读本文。

我正在制作一个有趣的小程序,用它练习并熟悉。我知道这可能不是最好的语言,但它是我正在使用的。

这就是我所拥有的:

@echo off
:ask trump

set /p Input= Ask Trump Something (Yes or No questions):

goto random

:random
set /a "rand=%random% %% 6"
goto option%number%

cls

:option0
echo You asked: %Input% 
echo Trump: Covfefe
pause
goto ask trump

:option1
echo You asked: %Input%
echo Trump: I dont know, and I dont care.
pause
cls
goto ask trump

option2
echo You asked: %Input%
echo Trump: CHINA
pause
cls
goto ask trump

:option3
echo You asked: %Input%
echo Trump: Build a wall.
pause
cls
goto ask trump

:option4
echo You asked: %Input%
echo Trump: I think so, yes.
pause
cls
goto ask trump

:option5
echo You asked: %Input%
echo Trump: No, I don't think there's a chance.
pause
cls
goto ask trump

我希望它能完全忽略用户写的内容,只选择一个随机的答案。但是,每当我尝试它时,我输入一个问题,点击输入,它什么都不做。弹出的另一个输入事物没有任何新文本,无论我在那里键入什么,它都会崩溃。我试图在这里找到答案,但我找不到可以工作/做我想要的东西。

再次,我非常感谢任何帮助,如果我浪费你的时间,我会道歉。

1 个答案:

答案 0 :(得分:0)

您的主要问题是set /a rand但是您从不使用rand作为变量,而是说goto option%number%应该是`goto option%rand%

我改变了一些其他的东西,在:ask trump之后添加了cls,这样你就可以摆脱c:\>提示并留下一个普通的cmd屏幕。 cls也被添加到其他标签中,因此它在屏幕上看起来会更清晰。

最后,行set /a rand=%random% %%6将生成一个在0 - 5之间设置的数字,这很好,因为它是6个数字,但是根据实际值标记您的选项听起来更好。因此,如果我有6个答案,我想将它们标记为1 - 6而不是0 - 5,因此最好将随机设置为set /a rand=%random% %%6 +1。选项也会相应更新。

@echo off
:ask trump
cls
set /p Input= Ask Trump Something (Yes or No questions):

goto random

:random
set /a rand=%random% %%6 +1
goto option%rand%

:option1
cls
echo You asked: %Input% 
echo Trump: Covfefe
pause
goto ask trump

:option2
cls
echo You asked: %Input%
echo Trump: I dont know, and I dont care.
pause
cls
goto ask trump

:option3
cls
echo You asked: %Input%
echo Trump: CHINA
pause
cls
goto ask trump

:option4
cls
echo You asked: %Input%
echo Trump: Build a wall.
pause
cls
goto ask trump

:option5
cls
echo You asked: %Input%
echo Trump: I think so, yes.
pause
cls
goto ask trump

:option6
cls
echo You asked: %Input%
echo Trump: No, I don't think there's a chance.
pause
cls
goto ask trump