Board logo

标题: 不能执行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
呵呵
客气了

有问题我还是要请教你们高手阿