Batch file 批处理if-else语句不工作

Batch file 批处理if-else语句不工作,batch-file,if-statement,Batch File,If Statement,我正在写一个小程序,但是if-else语句有问题 @echo off set /p points= echo %points% echo 1x5= set /p 15= if %15%==5 ( echo well done! set /a points=%points%+1 ) else ( echo wrong! ) pause echo %points% pause 即使我填写了一个错误的答案,它仍然会给我的分数打1分,并说“干得好!” (顺便说一句:

我正在写一个小程序,但是if-else语句有问题

@echo off 
set /p points= 
echo %points% 
echo 1x5= 
set /p 15= 
if %15%==5 ( 
    echo well done! 
    set /a points=%points%+1 
) else ( echo wrong! )
pause 
echo %points% 
pause
即使我填写了一个错误的答案,它仍然会给我的分数打1分,并说“干得好!”


(顺便说一句:在输入代码时遇到了一些问题,如果您能够阅读它,现在就不要这样做)

当调用批处理文件时,命令行中包含一个参数时,它从代码中引用为
%1
%2
。。。第一,第二。。。参数

在代码中,当您编写
时,如果%15%==5…
%15%
将被解释为批处理文件的第一个参数(
%1
),后跟一个5和一个未转义的非成对百分号,解析器将丢弃该百分号。因此,如果批处理文件没有输入参数且
%1
为空,则执行的if代码为
if 5==5…

作为一般建议,批处理文件中的变量“不应”以数字开头,因为它们将被视为输入参数

@echo off 
setlocal enableDelayedExpansion
set /p points= 
echo %points% 
echo 1x5= 
set /p 15= 
if !15!==5 ( 
    echo well done! 
    set /a points=!points!+1 
) else ( echo wrong! )
pause 
echo !points! 
endlocal
pause
MC MD解释了为什么你的代码不工作。这里有一个方法让它工作