Board logo

标题: [求助]如何输出for循环里累加的数字 [打印本页]

作者: brickflying     时间: 2008-4-14 15:28    标题: [求助]如何输出for循环里累加的数字

我写的bat如下,希望把每次累加后的值都输出来
        @echo off
        set var=0
        ::为变量var赋初值。
        for /l %%i in (1,1,10) do (
            echo %var%
            set /a var+=1
        )
        echo var的结果是%var%。
        pause
        exit

可是结果却是这样的,
0
0
0
0
0
0
0
0
0
0
var的结果是10。
请按任意键继续. . .

我不太明白为什么在for里的echo输出的都是0
请高手帮帮忙
作者: abcd     时间: 2008-4-14 15:30
@echo off
        set var=0
        ::为变量var赋初值。
        for /l %%i in (1,1,10) do (
            call echo %%var%%
            set /a var+=1
        )
        echo var的结果是%var%。
        pause
        exit
作者: brickflying     时间: 2008-4-14 15:53
谢谢abcd,结果对了
call echo %%var%%
是什么意思啊
作者: bat-zw     时间: 2008-4-14 16:26
等同于延时,在for语句中未开启变量延迟的情况下,直接echo前面设置的变量值%var%是不行的。比较一下下面两段代码就明白了:
set a=5&echo %a%
pause>nul

set a=5
echo %a%
pause>nul
[ Last edited by zw19750516 on 2008-4-14 at 04:31 PM ]
作者: brickflying     时间: 2008-4-16 10:47
呵呵,太感谢了
作者: zw4123     时间: 2008-4-16 10:57
开启变量延迟,但是我好像还是不太明白
作者: huahua0919     时间: 2008-4-16 14:11
不用for也行
@echo off
set sum=0
set num=1
:loop
set /a sum+=%num%&set/a num+=1&if %num% lss 10  goto :loop
echo %sum%
pause >NUL

作者: shengping     时间: 2009-2-12 12:17
Set /a 如何才能在纯DOS 下使用?
作者: HAT     时间: 2009-2-12 12:59    标题: Re 8楼

纯 DOS 下的set命令没有/a和/p之类的开关
作者: zhengqian529     时间: 2009-2-12 18:36
/a /p是命令扩展了才有的吧?