[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]批处理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不显示计算后的的结果啊。
即便是启用变量延迟或者禁用变量延迟也是一样的结果
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

启用了变量延迟,% 号的功能并没有得到拓展,要使用变量延迟的变量要把 % 换成 !,也就是把 %a% 换成 !a!。
另外,set /a 具备解释变量的功能,所以此处的 set /a "a=%b%-%c%" 可以简写成 set /a "a=b-c"
1

评分人数

TOP

回复 2# CrLf


    谢谢了,晕死,怎么没想到,真是当局者迷死。。。。。。

TOP

估计在set /p "input="  输入时忘记"G"是大写,把小写"g" 输入进去,所以得不到计算结果
1

评分人数

    • CrLf: 乐于助人PB + 2

TOP

  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
复制代码

TOP

返回列表