中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 奇怪的 SET /a ? 上一主题 | 下一主题
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『楼 主』:  奇怪的 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 ]

2007-3-2 02:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  呵呵,这个牵涉到变量的延迟问题,可以参考这个帖子:什么情况下该使用变量延迟?



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-3-2 02:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 3 楼』:  

我想,应该是变量延迟的关系吧。
开头加上 setlocal enabledelayedexpansion
FOR 中间的变量把这种形式:%var%,换成这种形式!var!

2007-3-2 02:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 4 楼』:  

willsort 大大 讲的好

2007-3-2 04:10
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
juventusryp
初级用户





积分 88
发帖 40
注册 2006-12-26
状态 离线
『第 5 楼』:  

恩,看看2楼NA斑竹说的那个帖子就好了...总之就是,因为你在FOR语句后又要用到你前面已经申明的变量,所以要用变量延迟

2007-3-2 05:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qingfushuan
高级用户





积分 502
发帖 327
注册 2006-12-30
状态 离线
『第 6 楼』:  

用这个学习延时变量好方便哦,比文字说明好多了,收藏了

2007-3-2 05:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 7 楼』:  

我用的时候是错误的,NUM始终都是4,你的FOR语句好象有错误的吧?

2007-3-4 10:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 8 楼』:  

将 echo %num% 改为 call echo %%num%% 也可以

2007-3-4 10:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: