中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 02:20
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 半夜写了一个数字循环,不知道为什么不能输出 查看 830 回复 9
楼 主 半夜写了一个数字循环,不知道为什么不能输出 发表于 2008-07-01 00:52 ·  中国 湖北 黄石 大冶市 电信
初级用户
积分 110
发帖 45
注册 2008-01-25 23:59
18年会员
UID 109558
性别 男
状态 离线
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就退出了,
2 发表于 2008-07-01 01:00 ·  中国 湖北 黄石 大冶市 电信
初级用户
积分 110
发帖 45
注册 2008-01-25 23:59
18年会员
UID 109558
性别 男
状态 离线
FOR语句有问题吗,a是一位数,b是三位数,var是两位数,按逻辑应该要输出的呀?
3 发表于 2008-07-01 01:05 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
for /L %%var in (%%a,1,%%b) do echo %%var>> a.txt
4 发表于 2008-07-01 01:20 ·  中国 湖北 黄石 大冶市 电信
初级用户
积分 110
发帖 45
注册 2008-01-25 23:59
18年会员
UID 109558
性别 男
状态 离线
楼上的和我写的是一样的呀
5 发表于 2008-07-01 03:23 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
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 ]
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
6 发表于 2008-07-01 06:12 ·  中国 吉林 吉林市 联通
初级用户
积分 68
发帖 32
注册 2007-12-09 17:16
18年会员
UID 105152
性别 男
状态 离线
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%表示的
7 发表于 2008-07-01 10:00 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@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%
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
yiyuncao007 +2 2008-07-01 21:13
8 发表于 2008-07-01 20:38 ·  中国 湖北 黄石 大冶市 电信
初级用户
积分 110
发帖 45
注册 2008-01-25 23:59
18年会员
UID 109558
性别 男
状态 离线
哦,原来FOR循环里的控制变量只能用单字符表示,在DOS环境里怎么设置成这样呀,*.bat能运行了,但是我觉得输出应该是一行,结果却和我预想不一样?
V取值不是只有一次吗?
9 发表于 2008-07-01 21:07 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
for /l %%v in (100,1,200) do echo %%v

这个和C语言是类似的

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

这次明白了否?
10 发表于 2008-07-01 21:21 ·  中国 湖北 黄石 大冶市 电信
初级用户
积分 110
发帖 45
注册 2008-01-25 23:59
18年会员
UID 109558
性别 男
状态 离线
汉,脑袋转不过来,HAT你这样一讲让我顿感彻悟了,色即上空,空即是色,哈
论坛跳转: