所以我正在创建一个批处理文件,它将生成一个随机数,将其保存在变量中,然后你试着猜测它。如果您猜测低于数字,它将使您的尝试计数器上升一,并告诉您猜测更高,反之亦然。但是,当我输入一个数字时,它说(此时此刻意外。有人可以帮助我吗? 这是代码:
@echo off
cls
:1
setlocal EnableDelayedExpansion
set /a x = 0
set /a x = %RANDOM:~-3%
endlocal
goto 2
:2
set /p v = Enter your guess:
if %v% lss %x% (
echo Greater than that!
set /a g = %g%+1
title %g% Guesses so far!
goto 2
) else if %v% gtr %x% (
echo Less than that!
set /a g = %g%+1
title %g% Guesses so far!
goto 2
) else if %v% equ %x% (
echo Correct! It was %x%! It also took you %g% guesses to find it!
set /a g = 0
title %g% Guesses so far!
goto 1
)
echo That's not a number!
goto 2
答案 0 :(得分:3)
批处理对SET
语句中的空格敏感。 SET FLAG = N
将名为“FLAG Space ”的变量设置为值“ Space N”
因此,v
未设置且if
被解释为if lss 4 (
在ode块(括号中的行序列)中设置像g
之类的变量也会遇到问题。 %g%
将在分析时进行评估 - 它不会被解释为运行时值(即,当执行控制块的代码时)
请使用页面顶部栏中的delayed expansion
工具在search
上看到很多SO文章。
答案 1 :(得分:0)
你的问题是:
set /a x = 0
:: make it be:
set /a x=0
没有空间。