Я хочу удалить файлы в папке и ее подпапках, но не X
последние файлы снова в каждой папке. Например, в C:\Test
я хочу сохранить 10 текстовых файлов, но также в C:\Test\subtest1
и C:\Test\subtest2
. Здесь X
X - это количество файлов, которые я хочу сохранить.
Но при этом не будет сохранено 10 файлов в каждой папке, но во всей древовидности.
Мой сценарий не полностью функционален , но это хорошо сработало в каталоге C:\Test
:
Set-ExecutionPolicy unrestricted $txtfiles = 'C:\Users\MUC8VX\Documents\Test
ForEach-Object { Get-ChildItem $txtfiles | where{ -not $_.PsIsContainer}|
sort LastWriteTime -desc| select -Skip 10 |
Remove-Item -Include *.txt* -Force }
И если я добавлю -Recurse
, он не будет хранить по 10 файлов в каждой папке, но во всей древовидности:
Set-ExecutionPolicy unrestricted
$txtfiles =`C:\Users\MUC8VX\Documents\Test'
ForEach-Object { Get-ChildItem $txtfiles -Recurse | where{ -not
$_.PsIsContainer}| sort LastWriteTime -desc|
select -Skip 10 | Remove-Item -Include *.txt* -Force }
edit: Большое спасибо, Мануэль Батшинг.
Вот общий сценарий c:
#Insert your parent folder which contains files and subfolders
Get-Childitem -Path C:\Your\Parent\Folder -Recurse |
Group-Object Directory |
ForEach-Object {
$_.Group |
#sort by the last written files
Sort-Object LastWriteTime -Descending |
#Keep the X last files you want to keep
Select-Object -Skip X |
#Remove files according to their extension
Remove-Item -Include *.extension* -Force }