2013-07-27 13 views
5

Próbując stworzyć plik quizu show.bat i kłopoty z IF-Set Kodowanie:zestaw poleceń po komendzie If

:10  
echo @: (Press any key to continue) 
pause >nul 
cls 
echo Bonus Question 1: 
echo Translate the letters in CAPS. 
echo @: Copy the sentence and translate the words in CAPITALS. 
echo Il nome di mia ZIA e Gabriella e il nome di mio ZIO e Nick. 
echo @: Careful, you only get 3 goes! 
echo @: now you try! 
set /p BonusAnswer1=">" 
set /p BonusAnswer1=">" 
if "%BonusAnswer1%"=="Il nome di mia aunty Gabriella e il nome di mio uncle Nick. echo well done! &goto:11 
if "%BonusAnswer1%"=="Hint" echo @: Copy the sentence and translate ZIA and ZIO. Only put a capital for Il, Gabriella and Nick. &goto:10 

Tu mam problem:

if "%Bonus1Tries%"=="3" set Bonus1Tries=2 &echo you only have %Bonus1Tries% left! 

jedyną częścią tego kodowania, który nie działa to jest napisane:

you only have 3 tries left! 

zamiast

you only have 2 tries left! 

co oznacza, że ​​

zestaw Bonus1Tries = 2

nie pracuje. Czy możesz pomóc proszę i z góry dziękuję! -Wiązka Man

Odpowiedz

3

wewnątrz bloku kodu trzeba delayed expansion lub podzielić polecenia (jeśli to możliwe):

if "%Bonus1Tries%"=="3" set "Bonus1Tries=2" 
if "%Bonus1Tries%"=="2" echo you only have %Bonus1Tries% left! 
+0

Jeszcze raz dziękuję, to naprawdę pomogło! –

0

Musisz włączyć opóźnieniem ekspansji

SETLOCAL ENABLEDELAYEDEXPANSION 
set VAR=before 
set VAR=after & echo immediate:%VAR%, delayed:!VAR! 
ENDLOCAL 

Jak wyjaśnił Raymond Chen