2013-09-25 94 views
1

基本上,我的代碼基本上會繼續生成相同的數字。我已將回音消除以查看問題,並且實際的%隨機%變量正在改變,但它看起來像是數學,並且說「不,這實際上是這個數字。」這裏的代碼:批量隨機數生成器 - 生成與之前相同的數

set /a num=(24 * %random%)/32768 + 1 

我已經測試了自己的代碼,它工作正常。但是,當我將if語句*添加到代碼中時,它全部都是重擊。所以,問題是,我該如何解決這個問題,爲什麼會發生?

*我的if語句:

if "%num%"=="24" (
    echo X 
    set /p ans= 
    if "%ans%"=="litin" (
    echo. 
    echo Correct! 
    pause>nul 
    goto generate 
) 
) 

所有我的if語句,像她那樣。

回答

1

聽起來像你可能有一個變量擴展的問題。假設你在循環中做這些事情。

嘗試在你的程序是這樣的頂部添加setlocal

setlocal ENABLEDELAYEDEXPANSION 

而且endlocal在程序的結尾:

endlocal 

現在,當你需要使用一個變量,在循環中不斷變化的,用!語法而不是%

if "!num!"=="24" (
    echo X 
    set /p ans= 
    if "!ans!"=="litin" (
    echo. 
    echo Correct! 
    pause>nul 
    goto generate 
) 
) 
+2

當啓用延遲擴展時'''文字必須被轉義:'echo正確^^!'。不僅循環需要延遲擴展。在IF語句中,級聯命令或括號內的多個命令具有相同的問題。 – dbenham

0

您可能想要使用EQU來比較數字。所以試試這個

if "%num%" EQU 24 ( 
    ... 
)