De la documentación:confundido con el parámetro del -Include del cmdlet Get-ChildItem
del -Include
recupera sólo los elementos especificados. El valor de este parámetro califica el parámetro Ruta. Introduzca un elemento o patrón de ruta , como "* .txt". Se permiten comodines.
La Incluir parámetro sólo es efectivo cuando el comando incluye el parámetro Recurse o la ruta conduce al contenido de un directorio , como C: \ Windows *, donde el carácter comodín especifica los contenido de la C: \ directorio de Windows.
Mi primer entendimiento era:
c:\test\a.txt
c:\test\b.txt
Así que para conseguir 'a.txt' y 'b.txt' Puedo escribir:
gci -Path "c:\test\*" -Include "*.txt"
Y esto funciona. Pero ahora considerar dicha jerarquía:
c:\test\a.txt
c:\test\b.txt
c:\test\c.txt\c.txt
El comando devuelve: mismos a.txt, B.txt, c.txt
La lógica real parece ser:
del -Include usados para hacer coincidir todas las entidades especificadas por -Path. Si el elemento coincidente es un archivo, devuélvalo. Si el elemento coincide con una carpeta, busque dentro y return matching first level children.
Además, la documentación dice:
La Incluir parámetro sólo es efectivo cuando el comando incluye el parámetro Recurse o la camino conduce al contenido de un directorio ...
Esto también está mal. P.ej.
gci -Path "c:\test" -Include "*.txt"
No devuelve nada, mientras que sin -Incluir obtengo contenido de la carpeta. Entonces -Incluir es definitivamente "efectivo". ¿Qué pasa realmente aquí? El -Path especifica la "c: \ test" y el -Include intenta hacer coincidir esta ruta. Como "* .txt" no coincide con "prueba", no devuelve nada. Pero mira esto:
gci -Path "c:\test" -Include "*t"
Devuelve a.txt, b.txt y c.txt como "* t" emparejado "prueba" y acertó los elementos secundarios.
Después de todo, incluso sabiendo cómo funciona Include ahora, no entiendo cuándo usarlo. ¿Por qué lo necesito para mirar dentro de las subcarpetas? ¿Por qué debería ser tan complejo?
Estoy usando PowerShell-v2.0-CTP3, y su ejemplo produce un conjunto vacío. – alex2k8
@ alex2k8, No estoy seguro de qué decir aquí. He intentado este ejemplo en 1.0 y una compilación 2.0 posterior, ambos producen los mismos resultados. – JaredPar
@Jared, esto es extraño. Por favor, puedes probar gci -path c: \ * -in *. Veo hijos de c: \ y todas sus subcarpetas están un nivel abajo. Aquí está la descripción similar http://www.eggheadcafe.com/software/aspnet/32624832/getchilditem-include-qu.aspx – alex2k8