从文档:
-包括
仅检索指定的项目。此参数的值限定了 Path 参数。输入路径元素或模式,例如“*.txt”。允许使用通配符。
Include 参数仅在命令包含 Recurse 参数或路径指向目录的内容时才有效,例如 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 指定的所有实体。如果匹配的元素是一个文件 - 返回它。如果匹配的元素是文件夹,则查看内部并返回匹配的第一级子级。
此外,文档说:
Include 参数仅在命令包含 Recurse 参数或路径指向目录的内容时才有效...
这也是错误的。例如
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 是如何工作的,我也不明白什么时候使用它。为什么我需要它查看子文件夹内部?为什么要这么复杂?