Board logo

标题: [已解决]批处理if语句中为何不显示变量计算后的结果? [打印本页]

作者: 风之语故乡    时间: 2011-8-12 11:01     标题: [已解决]批处理if语句中为何不显示变量计算后的结果?

  1. @echo off
  2. set "a=3"
  3. set "b=60"
  4. set "c=30"
  5. echo.请输入G或者其他
  6. set /p "input="
  7. if "%input%"=="G" (
  8. set /a "a=%b%-%c%"
  9. echo.%a%
  10. )
  11. echo %a%
  12. pause>nul
复制代码
我不知道为什么if中的变量a不显示计算后的的结果啊。
即便是启用变量延迟或者禁用变量延迟也是一样的结果
作者: CrLf    时间: 2011-8-12 11:17

启用了变量延迟,% 号的功能并没有得到拓展,要使用变量延迟的变量要把 % 换成 !,也就是把 %a% 换成 !a!。
另外,set /a 具备解释变量的功能,所以此处的 set /a "a=%b%-%c%" 可以简写成 set /a "a=b-c"
作者: 风之语故乡    时间: 2011-8-12 11:24

回复 2# CrLf


    谢谢了,晕死,怎么没想到,真是当局者迷死。。。。。。
作者: 545810831    时间: 2011-8-12 11:25

估计在set /p "input="  输入时忘记"G"是大写,把小写"g" 输入进去,所以得不到计算结果
作者: Hello123World    时间: 2011-8-12 15:29

  1. @echo off
  2. set "a=3"
  3. set "b=60"
  4. set "c=30"
  5. echo.请输入G或者其他
  6. set /p "input="
  7. if /i "%input%"=="G" (
  8. set /a "a=b-c"
  9. )
  10. echo %a%
  11. pause>nul
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2