Board logo

标题: 半夜写了一个数字循环,不知道为什么不能输出 [打印本页]

作者: yiyuncao007     时间: 2008-7-1 00:52    标题: 半夜写了一个数字循环,不知道为什么不能输出

set a=%random:~0,1%
set b=%random:~0,3%
set var=%random:~0,2%
echo %var%
pause
for /L %%var in (%%a,1,%%b) do echo %%var>> a.txt
pause
一到了FOR 语句DOS就退出了,
作者: yiyuncao007     时间: 2008-7-1 01:00
FOR语句有问题吗,a是一位数,b是三位数,var是两位数,按逻辑应该要输出的呀?
作者: radem     时间: 2008-7-1 01:05
for /L %%var in (%%a,1,%%b) do echo %%var>> a.txt
作者: yiyuncao007     时间: 2008-7-1 01:20
楼上的和我写的是一样的呀
作者: pusofalse     时间: 2008-7-1 03:23
c:\>for/?
%variable  指定一个单一字母可替换的参数。


set a=b
echo %a%


a是一位数,b是三位数,var是两位数。。。
你怎么知道就一定是这样。。
set b=%random:~0,3%
万一执行这句时random 扩展出的值是两位数呢。。

[ Last edited by pusofalse on 2008-7-1 at 03:25 AM ]
作者: qianmo717     时间: 2008-7-1 06:12
set a=%random:~0,1%
set b=%random:~0,3%
set var=%random:~0,2%
如果上面的语句得出了你想要的结果:即a是一位数....
for /L %%var in (%%a,1,%%b) do echo %%var>> a.txt
那么上面的%%a,%%b和%%var也是不对的
变量是用%a%表示的
作者: HAT     时间: 2008-7-1 10:00

@echo off
set a=%random:~0,1%
set b=%random:~0,3%
set v=%random:~0,2%
echo %v%
pause
for /L %%v in (%a%,1,%b%) do echo %%v
pause
1. for循环里面的控制变量只能是一位字符
2. for循环里面的控制变量这样写%%c,其他变量这样写%a%
作者: yiyuncao007     时间: 2008-7-1 20:38
哦,原来FOR循环里的控制变量只能用单字符表示,在DOS环境里怎么设置成这样呀,*.bat能运行了,但是我觉得输出应该是一行,结果却和我预想不一样?
V取值不是只有一次吗?
作者: HAT     时间: 2008-7-1 21:07
for /l %%v in (100,1,200) do echo %%v

这个和C语言是类似的

for (v=100;v<=200;v++){
  printf("%d",v);
}

这次明白了否?
作者: yiyuncao007     时间: 2008-7-1 21:21
汉,脑袋转不过来,HAT你这样一讲让我顿感彻悟了,色即上空,空即是色,哈