来自文档:
-包括
仅检索指定的项目.此参数的值限定Path参数.输入路径元素或模式,例如"*.txt".允许使用通配符.
仅当命令包含Recurse参数或路径指向目录内容(例如C:\ Windows*)时,Include参数才有效,其中通配符指定C:\ Windows目录的内容.
我的第一个理解是:
c:\test\a.txt
c:\test\b.txt
Run Code Online (Sandbox Code Playgroud)
所以要得到'a.txt'和'b.txt'我可以写:
gci -Path "c:\test\*" -Include "*.txt"
Run Code Online (Sandbox Code Playgroud)
这很有效.但现在考虑这样的等级:
c:\test\a.txt
c:\test\b.txt
c:\test\c.txt\c.txt
Run Code Online (Sandbox Code Playgroud)
相同的命令返回:a.txt,b.txt,c.txt
实际逻辑似乎是:
-Include用于匹配-Path指定的所有实体.如果匹配元素是文件 - 返回它.如果匹配的元素是文件夹,请查看内部并返回匹配的第一级子项.
此外,文件说:
仅当命令包含Recurse参数或路径指向目录内容时,Include参数才有效...
这也是错误的.例如
gci -Path "c:\test" -Include "*.txt"
Run Code Online (Sandbox Code Playgroud)
它什么都不返回,而没有-Include我得到文件夹内容.所以 - 包含绝对是"有效的".这里到底发生了什么?-Path指定"c:\ test",-Include尝试匹配此路径.由于"*.txt"与"test"不匹配,因此没有返回任何内容.但看看这个:
gci -Path "c:\test" -Include "*t"
Run Code Online (Sandbox Code Playgroud)
它返回a.txt,b.txt和c.txt作为"*t"匹配的"test"并匹配所有子项.
毕竟,即使知道Include如何工作,我也不明白何时使用它.为什么我需要它来查看子文件夹内?为什么要这么复杂?