有人可以解释一下这种区别吗?
给定一个包含以下文件/目录的目录:
09-Sep-16 14:14 <DIR> ignoreMe
09-Sep-16 14:13 <DIR> ignore.me
09-Sep-16 14:13 0 myfile1.txt
09-Sep-16 14:13 0 myfile2.txt
该命令: for %i in (*) do echo %i
将输出:
myfile1.txt
myfile2.txt
(意味着它只输出文件,而不是目录)
但是这个命令:dir *
将输出:
ignoreMe
ignore.me
myfile1.txt
myfile2.txt
(意味着它输出文件和目录)
请注意两种情况下使用的都是同一个 GLOB,但结果却不同。难道不应该一致吗?
有人能解释一下为什么吗?
答案1
您有以下选择:
- 文件:
for %i in (*) do @echo %i
- 子目录:
for /D %i in (*) do @echo %i
你不能在一条for
语句中同时得到两种结果,因为子目录是一个开关(/D) 位于修改其输出的命令内部。
如需进一步解释,请for /?
输入命令。