除非用户输入程序生成的正确数字,否则此程序中的一切正常。例如,如果输入13则回复“太低”,如果输入14则回答“太高”。如何修复此问题以使第3个if语句正常运行?
@echo off
title Game
set num1=%random%%101
:start
set /p num2=Enter a number:
if %num2% gtr %num1% (echo too high
pause
cls
goto :start
)
if %num2% lss %num1% (echo too low
pause
cls
goto :start
)
if %num2% equ %num1% (echo Bingo!)
pause
cls
exit
答案 0 :(得分:0)
此批处理文件正常工作:
@echo off
title Game
setlocal EnableDelayedExpansion
set /A num1=%random% %% 101
:Retry
cls
set "num2="
set /P "num2=Enter a number (%num1%): "
if !num2! GTR %num1% (
echo too high
pause
goto Retry
)
if !num2! LSS %num1% (
echo too low
pause
goto Retry
)
if !num2! EQU %num1% (
endlocal
echo Bingo!
pause
exit /B
)
goto Retry
该行
set num1=%random%%101
也可以在上面的批处理文件中使用,但创建
0
和1
。我想像SomethingDark那样需要0到100之间的随机数。
start 是标准的Windows命令,因此建议尽管不可能使用 start 作为标签。
启用延迟扩展并用于num2
,以避免批处理用户输入任何内容或错误输入时出现语法错误而导致批处理文件退出。
在提示用户之前总是取消设置环境变量num2
,否则批处理用户只需按 RETURN 或 ENTER 继续处理任何变量{ {1}}目前有价值。
注意:随机数以提示文本输出,以查看要输入的内容以进行测试。