Board logo

标题: For 循环中Set /a 怎么起作用 [打印本页]

作者: coolfsp     时间: 2008-6-3 16:46    标题: For 循环中Set /a 怎么起作用

Set /a count=0
echo %count%
set /a count+=3
echo %count%
for /r e:\info\qimage %%i in (*) do (
    set /a count+=1
    echo %count%
)

上面的code , 其中set /a count+=1无效,为什么?
作者: thirteen     时间: 2008-6-7 20:23
我也发现了,搞得很郁闷.
也在找解决办法.
作者: lxmxn     时间: 2008-6-7 21:09
set /a count+=1 的作用是使变量 count 的值自加1,无效是因为你没有启用变量延迟功能,试试下面的代码:
Set /a count=0
echo %count%
set /a count+=3
echo %count%

rem 启动变量延迟
Setlocal EnableDelayedExpansion

for /r e:\info\qimage %%i in (*) do (
    set /a count+=1
    echo !count!
)
想知道原因的话,就自己搜索一下论坛,关键字“变量延迟”。
作者: plp626     时间: 2008-6-7 21:10
Set /a count=0
echo %count%
set /a count+=3
echo %count%
for /r e:\info\qimage %%i in (*) do (
    set /a count+=1
    call echo %%count%%
)
作者: plp626     时间: 2008-6-7 21:11
『第 4 楼』:  

Set /a count=0
echo %count%
set /a count+=3
echo %count%
for /r e:\info\qimage %%i in (*) do (
    set /a count+=1
    call:这个方法也可以延迟
)
pause
:这个方法也可以延迟
echo %count%
作者: thirteen     时间: 2008-6-7 21:35
谢谢
作者: hisplay     时间: 2008-8-17 10:56
很好。。。牛人多啊
作者: killkk     时间: 2008-10-9 22:22
飘过。。
作者: luowei14     时间: 2008-10-9 22:56
....CALL的用法还真多..学习了
作者: mimi820     时间: 2008-10-10 22:22
简单的说就是运算出变量的结果
作者: feiyuguochen     时间: 2008-12-14 15:14    标题: 与楼主最接近的修改

最简单的修改:
@echo off
Set count=0
for /r e:\info\qimage %%i in (*) do (
    set /a count=count+1
   )
echo %count%
pause