Board logo

标题: [特效代码] [已解决]批处理for命令的r和d两个参数怎样一起用? [打印本页]

作者: Hello123World    时间: 2011-4-19 17:20     标题: [已解决]批处理for命令的r和d两个参数怎样一起用?

可以看出,与双重的for循环相比,for /r语句简单而同时又更为强大。有时候甚至可以将for /r与for /d结合起来使用(而不需使用双重的for循环),如下面给出的实例,该实例列出了%SystemRoot%下的所有目录及其子目录:
for /r %SystemRoot%/d %%B in (*) do echo %%B
http://book.51cto.com/art/200908/146462.htm



这里的用法好像出错了,for /r /d 可以一起用吗,一起用怎么用(一个for两个参数)
作者: CrLf    时间: 2011-4-19 18:04

只要同时符合for /r和for /d的语法就行,遮掉一个开关看看语法对吗?
作者: batman    时间: 2011-4-19 18:10

for /d就能枚举所有的目录(包括子目录),为什么还要加上/r。。。

for /r就能枚举所有的文件(包括子目录中的)。。。

个人认为/d和/r参数是不能放在一起用的。。。
作者: CrLf    时间: 2011-4-19 18:15

本帖最后由 zm900612 于 2011-4-19 18:16 编辑

试了下,发现我原来的理解也有问题:
  1. for /d /r H:\ %a in (*) do echo %a
  2. ::开关顺序对调就可以了,为什么呢?
复制代码

作者: plp626    时间: 2011-4-20 11:22

for /d就能枚举所有的目录(包括子目录),为什么还要加上/r。。。

for /r就能枚举所有的文件(包括子目录中的)。。。

个人认为/d和/r参数是不能放在一起用的。。。
batman 发表于 2011-4-19 18:10


"for /d就能枚举所有的目录(包括子目录),"

这个,是不是你括号里少打了一个字?
作者: Hello123World    时间: 2011-4-20 13:49

4# zm900612



for /d /r H:\ %a in (*) do echo %a
::开关顺序对调就可以了,为什么呢?
for /d  /r c:\hello %a in (*) do echo %a
这句代码虽然可以运行,但是事实上只有/d参数是有效地,/r参数没有发挥用处。
作者: Hello123World    时间: 2011-4-20 13:51

我有点倾向于3楼的说法了,可能是书错了?
作者: hanyeguxing    时间: 2011-4-20 14:35

本帖最后由 hanyeguxing 于 2011-4-20 15:48 编辑

以下枚举时均不包括隐藏属性,"选项"为可选
for %%a in (*) do echo;%%a 枚举目录中所有文件,不包括子目录中的
for /d %%a in (*) do echo;%%a 枚举目录中所有文件夹,不包括子目录中的
for /r "选项" %%a in (*) do echo;%%a 枚举目录中所有文件,包括子目录中
for /r "选项" /d %%a in (*) do echo;%%a
for /d /r "选项" %%a in (*) do echo;%%a 枚举目录中所有文件夹,包括子目录中
/r 和 /d 一起使用时:
1,因为仅 for /r 支持 "选项" ,所以在 /r 和 /d 一起使用时,"选项"必须跟在 /r 的后面。
2,/r 和 /d 没有先后顺序
3,/r /d "选项" 之间要分隔
ps:书中错误的没有将 /r /d "选项" 之间使用空格分隔
作者: CrLf    时间: 2011-4-20 14:35

4# zm900612



for /d /r H:\ %a in (*) do echo %a
::开关顺序对调就可以了,为什么呢?
for /d  /r c:\hello %a in (*) do echo %a
这句代码虽然可以运行,但是事实上只有/d参数是有效地,/r参数没有发挥 ...
Hello123World 发表于 2011-4-20 13:49

nonono,此时/r与/d开关联用,是取得所有子文件夹名,而非当前文件夹名
作者: Hello123World    时间: 2011-4-20 15:51

/r /d 还是可以联合用的,谢谢各位大神。
作者: Hello123World    时间: 2011-4-20 16:21

5# plp626
你说的是个不字吗?——开始没明白。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2