Копирование файлов конкретного типа из рекурсивно вложенных папок c помощью скрипта Powershell
У меня есть некоторое количество папок, в том числе рекурсивно вложенных, в которых мне надо найти и скопировать в одну директорию все файлы типа, например, txt. Я использую следующий скрипт:
$folders = [IO.Directory]::GetDirectories("S:\other","*","AllDirectories")
Foreach ($dir in $folders) {
Copy-Item -Path $dir -Filter *.txt -Recurse -Destination 'D:\FinishFolder'
}
Проблема в том, что он копирует все вложенные папки на пути к нужному файлу. Как я могу этого избежать?
Ответы (1 шт):
Автор решения: Aleksey Bokaty
→ Ссылка
Сделать еще один Foreach внутри вашего и перебирать в каждой папке файлы и уже нужные копировать.
$folders = Get-ChildItem "S:\other" -Recurse | Where-Object mode -like 'd*'
Foreach ($dir in $folders) {
Get-ChildItem $dir.FullName | ForEach-Object {
if ($_.name -like '*.txt') {
Copy-Item $_ -Destination D:\FinishFolder
}
}
}
Простите, за код в лоб, не умею изящно программировать.