Get-ChildItem с символами в пути без "Где" - PullRequest
0 голосов
/ 26 июня 2019

Я хочу использовать дикие символы в пути, переданном на Get-ChildItem.Поэтому в примере я хочу использовать C:\root\*\container в качестве параметра пути.Но это поиск только на 1 уровне ниже.Если я напишу C:\root\*\*\container, то будет искать только 2 уровня ниже.

Я пытаюсь сделать что-то вроде Get-ChildItem -Path "C:\root\*\container\vc$number" "*test*.exe" -Recurse и скопировать результаты в определенный каталог.Если я найду рекурсивный поиск в C:\root, я найду слишком много файлов.Если я использую путь, указанный в примере, то я ищу только 1 уровень ниже, а не рекурсивно во всех каталогах (это может быть даже 5 уровней глубиной).Я знаю, что могу использовать

Get-ChildItem -Path "C:\root\" "*test*.exe" -Recurse | Where { %_.FullName -like "container\vc$number" }

, но мне было интересно, могу ли я пропустить, используя Where и использовать дикие символы в пути.Причиной этого является то, что я читаю пути из внешнего файла, и некоторые пути содержат дикие символы (как пример выше), а некоторые нет.Поэтому я надеюсь, что мне не нужно писать функцию, которая обрабатывает путь и использует Get-ChildItem с / без Where

Итак, в моем примере

C:\root\container\*test*.exe, C:\root\a\container\*test*.exe,C:\root\b\container\*test*.exe, C:\root\c\x\y\container\*test*.exe, C:\root\c\x\y\z\g\container\*test*.exe

и так далее.И с C:\root\*\container я хочу найти их всех

1 Ответ

1 голос
/ 26 июня 2019

Get-Childitem имеет параметр Filter, который вы можете использовать для фильтрации желаемых результатов. В вашем случае (как я понял) вы хотите получить файлы во всех каталогах с именем «контейнер».

Сначала вы должны получить путь к этим каталогам, а затем получить файлы внутри следующим образом:

Get-ChildItem "C:\root" -filter "*container*" -recurse | Get-ChildItem

выход

C:\root\a\container\new.exe
C:\root\b\container\sample.exe
C:\root\c\x\y\z\g\container\anything.exe

Я использовал .Fullname в конце, чтобы отобразить их, как указано выше

...