批处理if else语句不起作用

时间:2014-05-18 14:22:17

标签: 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点广告并说“#34;做得好!"

(顺便说一句:在输入代码方面遇到了一些问题,如果你能阅读代码,现在就不用了)

2 个答案:

答案 0 :(得分:3)

在调用批处理文件时,如果参数包含在命令行中,则会从代码%1%2,...引用第一个,第二个...参数。

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

作为一般推荐,批处理文件中的变量"应该"永远不要以数字开头,因为它们将被视为输入参数。

答案 1 :(得分:0)

@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解释了为什么你的代码不起作用。这是一种让它成功的方法。