Batch file 编号为';t添加到if语句中的变量

Batch file 编号为';t添加到if语句中的变量,batch-file,if-statement,add,Batch File,If Statement,Add,为什么此批处理脚本不将值5添加到变量%counter%? 脚本始终回显初始化变量时使用的值2。 在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 您需要使用d

为什么此批处理脚本不将值5添加到变量
%counter%
? 脚本始终回显初始化变量时使用的值2。 在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

您需要使用delayedexpansion。%正在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

只是一个粗略的尝试,但计数器+=5是否工作?已尝试:D但不工作:(出现缺少运算符错误我想知道为什么它以前不工作。我已尝试添加setlocal enabledelayedexpansion,但我认为脚本的其余部分有点不同。感谢您的帮助!