标题: 奇怪的 SET /a ?
[打印本页]
作者: GOTOmsdos
时间: 2007-3-2 02:26
标题: 奇怪的 SET /a ?
下面的批处理为什么第二句的SET没有执行?
@echo off
set /a num=4
for %%a in (*.*) do (
set /a num +=1
echo %num%
)
值总是4,也显示4
可是,在退出整个程序后,用 ECHO %num%, 值却是正确的!
[
Last edited by GOTOmsdos on 2007-3-2 at 02:34 AM ]
作者: namejm
时间: 2007-3-2 02:44
呵呵,这个牵涉到变量的延迟问题,可以参考这个帖子:
什么情况下该使用变量延迟?
作者: NaturalJ0
时间: 2007-3-2 02:47
我想,应该是变量延迟的关系吧。
开头加上 setlocal enabledelayedexpansion
FOR 中间的变量把这种形式:%var%,换成这种形式!var!
作者: vkill
时间: 2007-3-2 04:10
willsort 大大 讲的好
作者: juventusryp
时间: 2007-3-2 05:33
恩,看看2楼NA斑竹说的那个帖子就好了...总之就是,因为你在FOR语句后又要用到你前面已经申明的变量,所以要用变量延迟
作者: qingfushuan
时间: 2007-3-2 05:58
用这个学习延时变量好方便哦,比文字说明好多了,收藏了
作者: zhoushijay
时间: 2007-3-4 10:02
我用的时候是错误的,NUM始终都是4,你的FOR语句好象有错误的吧?
作者: zh159
时间: 2007-3-4 10:10
将 echo %num% 改为 call echo %%num%% 也可以