中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-18 23:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 发现for的/r参数一个bug 查看 723 回复 5
楼 主 发现for的/r参数一个bug 发表于 2008-04-21 13:07 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
也许不是bug,但确实未曾遇到,那位可以解释下?

/r参数对集合里的.匹配为目录,可是下面4种方式:

for /r %b in (.)do echo/%b


for /r %b in (.)do echo\%b


for /r %b in (.)do echo.%b


只有这个代码正确显示:
for /r %b in (.)do echo %b
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2 发表于 2008-04-21 13:30 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
前三种要给前面加个call才能正确显示:
for /r %b in (.)do call echo/%b


for /r %b in (.)do call echo\%b


for /r %b in (.)do call echo.%b


这奇怪,这个for是怎么扩展变量的?
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
3 发表于 2008-04-21 13:35 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
晕,不光是/r参数,其他参数/d 还有空参 也是这样,
大家可以试试
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
4 发表于 2008-04-21 23:25 ·  中国 湖北 武汉 电信
中级用户
★★
积分 471
发帖 207
注册 2007-05-03 14:53
UID 87369
性别 男
状态 离线
不是bug,不好解释。

不过 /d 和 空参 不会出现类似 /r 这样的现象。
5 发表于 2008-04-21 23:38 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
我上午试过有的,今晚上怪了,试不出来了,

for把/ \.好像视为参数在此扩展,这它怪了
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
6 发表于 2008-04-23 14:42 ·  中国 北京 大兴区 联通
初级用户
积分 50
发帖 19
注册 2008-02-09 22:04
UID 110396
性别 男
状态 离线
再试几个例子就应该可以得出初步的结论

例1、
for /r %%i in (.) do echo...

例2、
for /r %%i in (.) do echo.hero

例3、
@echo off
setlocal enabledelayedexpansion
set hero=uu
for /r %%i in (.) do echo.!hero!&set hero=88
pause

还是感觉更像bug。
论坛跳转: