2013-07-27 44 views
5

Đang cố gắng để tạo ra một tập tin đố show.bat và gặp rắc rối với If-Set mã hóa:Set lệnh sau lệnh Nếu

: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 

đây là nơi tôi có vấn đề:

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

phần duy nhất của mã hóa không hoạt động là:

you only have 3 tries left! 

thay vì

you only have 2 tries left! 

có nghĩa là

bộ Bonus1Tries = 2

không hoạt động. Bạn có thể giúp đỡ và cảm ơn bạn trước! -Batch Man

Trả lời

3

bên trong một khối mã bạn cần delayed expansion, hoặc bạn chia lệnh (nếu có thể):

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

cảm ơn một lần nữa, điều đó thực sự hữu ích! –

0

Bạn phải kích hoạt mở rộng chậm

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

Theo giải thích của Raymond Chen