中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 不能执行set 上一主题 | 下一主题
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『楼 主』:  不能执行set


我的程序是:

@echo off
for /l %%a in (1,1,4) do (

   set /a n+=1

   for /l %%b in (1,1,%n%) do (

  echo hello,world                    )

                                    )
pause

我运行了一下,可就是没有预期的效果。
n 还是一直为零。

也就是说,set 这个循环没有执行,请高手看看 怎么回事?



2006-12-31 02:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 2 楼』:  

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%a in (1,1,4) do (

   set /a n+=1

   for /l %%b in (1,1,!n!) do (

  echo hello,world                    )

                                    )
pause

这样试试行不行

2006-12-31 03:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 3 楼』:  

试过了,还是不行啊

2006-12-31 03:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 4 楼』:  

是这样吗?
@echo off
for /l %%a in (1,1,4) do set/a n+=1
   for /l %%b in (1,1,%n%) do (
     echo hello,world
   )
pause




三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-31 03:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 5 楼』:  


  再来一个演示代码:
@echo off&SETLOCAL ENABLEDELAYEDEXPANSION&&(for,/l,%%a,in,(1,1,40),do,(set/a n+=1&(for,/l,%%b,in,(1,1,!n!),do,(set/p=%%b<nul))&echo.))&pause


2006-12-31 03:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by ccwan at 2006-12-30 14:13:
是这样吗?
@echo off
for /l %%a in (1,1,4) do set/a n+=1
   for /l %%b in (1,1,%n%) do (
     echo hello,world
   )
pause


  这不是楼主要的效果吧?


2006-12-31 03:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 7 楼』:  

好的呀,显示了十次
[set /a n+=1]==[%%a]呵呵,可以省略掉了
@echo off
for /l %%i in (1,1,4) do (
for /l %%l in (1,1,%%i) do (
echo hello,world)
)


2006-12-31 03:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 8 楼』:  

呵呵,不错。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-31 03:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 9 楼』:  

还是不对阿

我分析一下啊

%%a 有4次
那么 n 也就会循环到4
这样%%b 就会 从1到4进行循环

最后的结果应该是
第一次输出1个
第二次输出2个
。。。
。。。

那么总共输出1+2+3+4=10个“hello,world”
俄哦要的就是这个效果

可是你的只有四次,你的set 执行了四次,最后n=4
而没有n=1,2,3的情况使得%%b循环,以至于达不到我要的结果

2006-12-31 03:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 10 楼』:  

everest79

不错,效果是有了

但是你避开了set的有效循环,我既要效果,还有解决set在循环体内部的循环问题

你的真的很不错
我为什么就没有想到
但是我在其他的编程时,同样要碰到set的循环问题,
所以我还是要使得set能够循环

2006-12-31 03:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 11 楼』:  





三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-31 03:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 12 楼』:  


@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%a in (1,1,4) do (

   set /a n+=1

   for /l %%b in (1,1,!n!) do (

  echo hello,world                    )

                                    )
pause

这是发2楼的


2006-12-31 03:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 13 楼』:  

最近越来越不明白大家都在干什么,有什么目的了。
可能我太不适合待下去了,准备潜水……



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-31 03:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 14 楼』:  

2楼的
我调适了
不通过

谢谢大家

2006-12-31 03:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 15 楼』:  

ccwan

对不起哦

我不是说你的不行

只是我真的想要set 能在for 中循环

谢谢
我很佩服你的
真的

不要不理我们这帮菜鸟
呵呵

2006-12-31 03:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: