批处理脚本参数求和异常:结果始终含百位数值问题排查
问题分析与修复方案
你的问题根源很简单:求和变量result没有提前初始化。
批处理里,如果一个变量未被显式定义,执行set /a操作时会自动继承当前环境中同名变量的已有值。比如你之前可能在命令行里不小心设置过set result=100,那脚本每次运行时result的初始值就是100,自然累加后会多出来100——比如1+2+3=6加上100就是106,50+50=100加上100就是200,完全匹配你遇到的情况。
修复方法也很直接,在循环前给result初始化赋值为0,强制从0开始累加:
@echo off setlocal EnableDelayedExpansion set result=0 REM 初始化求和变量为0 for %%G in (%*) do ( set /a result+=%%G echo !result! )
这样不管环境中有没有同名变量,脚本的局部环境里result都会从0开始计算,求和结果就正常了。
内容的提问来源于stack exchange,提问作者Mike Tompson
相关产品推荐
相关产品推荐

