bat批处理for循环累加问题

echooffREMsetlocalENABLEDELAYEDEXPANSIONREM不起作用set/asum=0set/aii=1for/l%%iin(1,1,100)... echo off
REM setlocal ENABLEDELAYEDEXPANSION REM 不起作用
set /a sum=0
set /a ii=1
for /l %%i in (1,1,100) do (
@echo %%i-----
set /a sum+=%ii%
set /a ii=10
rem 为什么sum和ii的值都不变呀,怎么才能加(变)呢?
@echo %sum%
@echo %ii%
)
展开
 我来答
787553671
2014-08-25 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:95
采纳率:0%
帮助的人:95.7万
展开全部
改成这样

@echo off
setlocal ENABLEDELAYEDEXPANSION
set/a sum=0
set/a ii=1
for /l %%i in (1,1,100) do (
set/a sum+=!ii!
set/a ii=10
echo !sum!
echo !ii!)
rem ii的值当然不会变,因为set/a ii=10每次循环都会把ii的值设成10
追问
请问你试验了么,ii 一直是1啊,不是10……
追答
我试了,没问题呀
付芝华
推荐于2017-09-28 · TA获得超过566个赞
知道小有建树答主
回答量:281
采纳率:0%
帮助的人:388万
展开全部
@echo off
setlocal enabledelayedexpansion
set /a sum=0
set /a ii=1
for /l %%i in (1,1,100) do (
echo ---------%%i--------
set /a sum+=!ii!
set /a ii=10
echo !sum!  
echo !ii!
)
pause

变量用叹号括起来。

追问
试了一下,还是不行……,等等,貌似我弄错了,一会采纳你啊,再请问下这个原理是神马啊?谢谢
追答
setlocal enabledelayedexpansion
是启用变量延迟,启用之后用“!!”表示的变量才能体现效果。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式