标题: 不能执行set
[打印本页]
作者: scriptor
时间: 2006-12-31 02:59
标题: 不能执行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 这个循环没有执行,请高手看看 怎么回事?
作者: everest79
时间: 2006-12-31 03:06
@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
这样试试行不行
作者: scriptor
时间: 2006-12-31 03:11
试过了,还是不行啊
作者: ccwan
时间: 2006-12-31 03: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
作者: lxmxn
时间: 2006-12-31 03:18
再来一个演示代码:
@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
作者: lxmxn
时间: 2006-12-31 03:20
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 |
|
这不是楼主要的效果吧?
作者: everest79
时间: 2006-12-31 03:21
好的呀,显示了十次
[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)
)
作者: ccwan
时间: 2006-12-31 03:22
呵呵,不错。
作者: scriptor
时间: 2006-12-31 03:23
还是不对阿
我分析一下啊
%%a 有4次
那么 n 也就会循环到4
这样%%b 就会 从1到4进行循环
最后的结果应该是
第一次输出1个
第二次输出2个
。。。
。。。
那么总共输出1+2+3+4=10个“hello,world”
俄哦要的就是这个效果
可是你的只有四次,你的set 执行了四次,最后n=4
而没有n=1,2,3的情况使得%%b循环,以至于达不到我要的结果
作者: scriptor
时间: 2006-12-31 03:26
everest79
不错,效果是有了
但是你避开了set的有效循环,我既要效果,还有解决set在循环体内部的循环问题
你的真的很不错
我为什么就没有想到
但是我在其他的编程时,同样要碰到set的循环问题,
所以我还是要使得set能够循环
作者: ccwan
时间: 2006-12-31 03:27

作者: everest79
时间: 2006-12-31 03:28
@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楼的
作者: ccwan
时间: 2006-12-31 03:29
最近越来越不明白大家都在干什么,有什么目的了。
可能我太不适合待下去了,准备潜水……
作者: scriptor
时间: 2006-12-31 03:36
2楼的
我调适了
不通过
谢谢大家
作者: scriptor
时间: 2006-12-31 03:38
ccwan
对不起哦
我不是说你的不行
只是我真的想要set 能在for 中循环
谢谢
我很佩服你的
真的
不要不理我们这帮菜鸟
呵呵
作者: scriptor
时间: 2006-12-31 03:50
2楼的
不好意思
我又输入错误了
你的也是可以的
在此表示感谢和歉意
作者: dikex
时间: 2006-12-31 03:51
二楼的可以通过,为了看清楚一点循环的效果,我在其中加上了echo.
Quote: |
@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 )
echo.
)
pause |
|
运行结果如下

作者: ccwan
时间: 2006-12-31 03:52
楼主误会我的意思了。
我是真的觉得需要学的东西太多了,却没有精力完成,所以准备离开。
以后有机会还会再来。
借你的帖子灌了水,不好意思。
作者: scriptor
时间: 2006-12-31 03:58
呵呵
客气了
有问题我还是要请教你们高手阿