[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[特效代码] [已解决]批处理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两个参数)
1

评分人数

    • batman: 感谢给帖子标题标注[已解决]字样PB + 2

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

TOP

/r /d 还是可以联合用的,谢谢各位大神。

TOP

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开关联用,是取得所有子文件夹名,而非当前文件夹名

TOP

本帖最后由 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 "选项" 之间使用空格分隔
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

我有点倾向于3楼的说法了,可能是书错了?

TOP

4# zm900612



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

TOP

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

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

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


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

这个,是不是你括号里少打了一个字?

TOP

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

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

TOP

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

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

个人认为/d和/r参数是不能放在一起用的。。。
***共同提高***

TOP

只要同时符合for /r和for /d的语法就行,遮掉一个开关看看语法对吗?

TOP

返回列表