Top.Mail.Ru
Ответы

PowerShell - рекурсивное копирование файлов из папки в папку с определенным содержимым

Подскажите, пожалуйста, как именно скопировать папку и всё содержащееся в ней (в том числе и подпапки и их содержимое) с фильтрацией по размеру - максимальный объём файлов 1mb.

Пробовал покопаться с Copy-Item, но там не нашёл фильтрации.
/*
Copy-Item -Path $env:userprofile"\desktop" -recurse -force -destination $env:userprofile"\documents\temp\desktop"
*/
Копирует всё подряд, нужно копировать лишь доки, размером меньше 1 мб.

Пробовал и по-другому, через Get-ChildItem (Get-ChildItem -Path $env:userprofile"\desktop" | Where-Object {$_.length -lt 1mb}), но тут он либо выводит корректно всё содержимое, но не ныряет в подпапки, либо с параметром -Recurse туда ныряет, но при копировании нужна такая же иерархия древовидной системы, то бишь если в desktop есть папки 1 2 3, а в них в каждой есть папка "meow", то они и должны скопироваться в таком виде.

Может есть у кого идеи? Или кто-то занимался уже этим)

По дате
По Рейтингу
Аватар пользователя
Мыслитель
5лет

Блин, и они ещё говорят "да что ваша консоль, у нас тоже есть powershell" ..
find . -size -1048576c -exec cp --parents {} /full/path/ \;

Аватар пользователя
Оракул
5лет

Технически это что-то вроде
gci C:\Portable -Recurse | ? Length -LE 1MB | % {copy -Path $_.FullName -Destination $_.FullName.Replace('C:\Portable','R:\')}
В этом примере я копирую всё мелкое из папки C:\Portable в корень диска R:\