【发布时间】:2009-04-26 12:45:47
【问题描述】:
来自文档:
-包括
仅检索指定的项目。 此参数的值限定 路径参数。输入路径 元素或模式,例如“*.txt”。 允许使用通配符。
Include 参数仅在命令时有效 包括递归参数或 路径导致 a 的内容 目录,例如 C:\Windows*,其中 通配符指定 C:\Windows 目录的内容。
我的第一个理解是:
c:\test\a.txt
c:\test\b.txt
所以要得到 'a.txt' 和 'b.txt' 我可以这样写:
gci -Path "c:\test\*" -Include "*.txt"
这很有效。但现在考虑这样的层次结构:
c:\test\a.txt
c:\test\b.txt
c:\test\c.txt\c.txt
同样的命令返回: a.txt、b.txt、c.txt
实际的逻辑似乎是:
-Include 用于匹配-Path 指定的所有实体。如果匹配元素 是一个文件-返回它。如果匹配 element 是一个文件夹,看看里面 返回匹配的第一级子级。
另外,文档说:
Include 参数仅在命令时有效 包括递归参数或 路径导致 a 的内容 目录...
这也是错误的。例如
gci -Path "c:\test" -Include "*.txt"
它什么也不返回,而没有 -Include 我得到文件夹内容。所以 -Include 绝对是“有效的”。这里到底发生了什么? -Path 指定“c:\test”,-Include 尝试匹配此路径。由于“*.txt”与“test”不匹配,所以没有返回任何内容。但是看看这个:
gci -Path "c:\test" -Include "*t"
它返回 a.txt、b.txt 和 c.txt 作为 "*t" 匹配 "test" 并匹配所有子项。
毕竟,即使现在知道 Include 是如何工作的,我也不明白什么时候使用它。为什么我需要它查看子文件夹内部?为什么要这么复杂?
【问题讨论】:
标签: powershell include get-childitem