的-Include參數從技術文檔:困惑與Get-ChildItem cmdlet的
-Include
只檢索指定項。 此參數的值符合 Path參數。輸入路徑 元素或模式,例如「* .txt」。 允許使用通配符。
include參數是有效的,只有當該命令 包括Recurse參數或 路徑導致 目錄的內容,如C:\視窗*,其中 通配符指定的所述 內容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"
它不返回任何內容,而不包含我包含的文件夾內容。所以 - 包括絕對是「有效的」。這裏真的發生了什麼? -Path指定「c:\ test」,並且-Include嘗試匹配此路徑。由於「* .txt」與「test」不匹配,所以沒有返回。但是看看這個:
gci -Path "c:\test" -Include "*t"
它返回A.TXT,b.txt和c.txt爲「* T」匹配「測試」和匹配的所有子項。畢竟,即使知道包括現在的作品,我也不知道何時使用它。爲什麼我需要它看到子文件夾內?爲什麼它應該如此複雜?
我正在使用PowerShell-v2.0-CTP3,並且您的示例會生成空集。 – alex2k8 2009-04-26 17:21:02
@ alex2k8,不知道該說些什麼。我已經在1.0和2.0以後的版本中試過這個例子,兩者都產生了相同的結果。 – JaredPar 2009-04-26 17:25:46
@Jared,這很奇怪。請你可以試試gci -path c:\ * -in *。我看到c:\的子項目,並且所有子文件夾都是一級的。這裏是類似的描述http://www.eggheadcafe.com/software/aspnet/32624832/getchilditem-include-qu.aspx – alex2k8 2009-04-26 23:33:56