Вы можете вкладывать два Get-ChildItem
звонка:
Внешний Get-ChildItem -Directory -Recurse
вызов для фильтрации каталогов представляющих интерес в первую очередь,
внутренний Get-ChildItem -File
вызов, который для каждого найденного каталога анализирует и обрабатывает файлы , представляющие интерес.
Get-ChildItem -Path "D:\Wim\TM1\TI processes" -Filter "*}vues" -Recurse -Directory |
ForEach-Object {
Get-ChildItem -LiteralPath $_.FullName -Filter "*.vue" -File |
Where-Object { $_.BaseName -match '^[0-9]+$' } |
ForEach-Object { ($_.FullName -split '\\')[-2,-1] -join '\' }
} | Out-File D:\wim.txt
Примечание. Предполагается, что все *.vue
интересующие файлы находятся непосредственно в каждой папке *}vues
.
Что касается того, что вы пытались :
Учитывая то, что вы ограничиваете перечисляемые элементы файлами (-File
), шаблон подстановочного знака для каталога *}vues
никогда не будет соответствовать ни одному каталогу имен и, при отсутствии файлов , соответствующих этому шаблону, возвращает ничто .
Как правило, с -Recurse
это концептуально чище не для добавления шаблона с подстановочными знаками непосредственно к аргументу -Path
, чтобы лучше сигнализировать, что шаблон будет сопоставляться в каждом каталоге вподдерево.
В вашем случае вы бы заметили вашу попытку фильтрации вдвойне , учитывая, что вы также , используя параметр -Filter
.