批处理文件说(在if期间此时出乎意料)

时间:2017-03-26 06:39:13

标签: batch-file

所以我正在创建一个批处理文件,它将生成一个随机数,将其保存在变量中,然后你试着猜测它。如果您猜测低于数字,它将使您的尝试计数器上升一,并告诉您猜测更高,反之亦然。但是,当我输入一个数字时,它说(此时此刻意外。有人可以帮助我吗? 这是代码:

@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

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

没有空间。