Board logo

标题: 发现for的/r参数一个bug [打印本页]

作者: plp626     时间: 2008-4-21 13:07    标题: 发现for的/r参数一个bug

也许不是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

作者: plp626     时间: 2008-4-21 13:30
前三种要给前面加个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是怎么扩展变量的?
作者: plp626     时间: 2008-4-21 13:35
晕,不光是/r参数,其他参数/d 还有空参 也是这样,
大家可以试试
作者: ThinKing     时间: 2008-4-21 23:25
不是bug,不好解释。

不过 /d 和 空参 不会出现类似 /r 这样的现象。
作者: plp626     时间: 2008-4-21 23:38
我上午试过有的,今晚上怪了,试不出来了,

for把/ \.好像视为参数在此扩展,这它怪了
作者: xzyx     时间: 2008-4-23 14:42
再试几个例子就应该可以得出初步的结论

例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。