2014-02-19 50 views
0

爲什麼此批處理腳本不將值5添加到變量%counter%? 該腳本始終回顯變量初始化的值2。 在if語句之外,計數器工作得很好。編號未添加到if語句中的變量

:start 

set /a counter=2 
set /p message=Message: 

set "spam=%message%" 
echo %spam% 

if "%message%"=="%spam%" (

set /a counter=%counter% + 5 

echo %counter% 
) 

pause 

goto 
start 
+0

只是一個狂野的鏡頭,但計數器+ = 5的工作? – berentrom

+0

已經嘗試:D但不起作用:( 失蹤的操作員錯誤出現 – Wurstmarmelade

回答

1

您需要使用delayedexpansion。 %counter%正在If語句之外進行評估,但不在其中。

@echo off 
setlocal enabledelayedexpansion 

:start 

set /a counter=2 
set /p message=Message: 

set "spam=%message%" echo %spam% 

if "%message%"=="%spam%" (set /a counter=%counter% + 5 

echo !counter!) 

pause 

goto start 
+0

我想知道爲什麼它沒有工作過,我已經嘗試添加 setlocal enabledelayedexpansion 但我認爲腳本的其餘部分是有點不同 感謝您的幫助! – Wurstmarmelade