Windows FOR 循环与 DIR 命令的比较

Windows FOR 循环与 DIR 命令的比较

有人可以解释一下这种区别吗?

给定一个包含以下文件/目录的目录:

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 /?输入命令

相关内容