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