Удаление самых старых файлов в папке если их вес превысил 200 гб
Здравствуйте!
Помогите со скриптом, который будет удалять самые старые файлы и папки по директории, если их общий вес превысил 200 гб, так же он должен останавливаться удалять файлы когда общий вес достиг 200 гб и меньше.
Буду признателен за помощь!
|
DJ Mogarych |
11-06-2021 09:09 2960019 |
powershell
Код:
$folder = "D:\folder"
$currentSize = (dir "$folder" -file -Recurse -OutVariable files |measure -Sum length).sum
$targetSize = 200 * 1GB
if ($currentSize -gt $targetSize) {
$diff = $currentSize - $targetSize
$files = $files |sort lastwritetime
$c = 0
do {
$toDel = $toDel + ($files[$c]).length
$c++
} until ($toDel -gt $diff)
$files |select -First $c |del
dir "$folder" -Directory -Recurse |? {(dir "$($_.fullname)").count -eq 0} |del
}
|
Вложений: 1
DJ Mogarych, в какой версии PS работает Ваш код?
|
в 7.1.3 работает четко, но выбивает
Код:
Line |
16 | … der" -Directory -Recurse |? {(dir "$($_.fullname)").count -eq 0} |del
| ~~~
| Directory C:\A\WindowsPowerShell\Modules\WindowsPSModulePath\1.0.0 cannot be
| removed because it is not empty.
самОй работе не мешает
|
Вложений: 1
alpap, У меня хуже.
|
DJ Mogarych |
13-06-2021 19:50 2960186 |
megaloman, 5.1. Но у вас ругается на права.
alpap, вот это странно, т. к. проверяет же на наличие объектов.
|
greg zakharov |
13-06-2021 20:17 2960188 |
Цитата:
Цитата DJ Mogarych
вот это странно, т. к. проверяет же на наличие объектов.
|
Ничего странного: выбирается последний элемент в иерархии. По идее нужно "раскручивать" вложенность, либо сделать удаление последовательным (принцип "изнутри наружу"). Для наглядности принцип "раскручивания":
Код:
(ls X:\Path -r -di|sort FullName -de).ForEach{if (!(ls $_.FullName).Count) {ri $_.FullName -fo}}
Иными словами, нужно отсортировать в порядке вложенности: от наиболее дальнего к корню.
|
DJ Mogarych,
Цитата:
5.1. Но у вас ругается на права.
|
я наваял решение задачи на vbs, оно длинное и медленное (не привожу, если кто-то запросит, размещу), но на права не ругается. Что-то в консерватории не то. Возможно, из-за скрытых ини-файлов.
|
DJ Mogarych |
14-06-2021 20:44 2960271 |
Может быть, надо добавить к del какое-то сочетание ключей
Код:
-Recurse -Force -Confirm:$false
Не знаю, нужно разбираться в каждом отдельном случае. Я тестировал на обычных файлах в каталоге Downloads.
|
предупреждение выдает если попадаются системные и скрытые файлы и еще переспрашивает перед этим, точно удалять или нет.
|
DJ Mogarych |
15-06-2021 09:37 2960310 |
|
greg zakharov |
15-06-2021 20:26 2960344 |
DJ Mogarych, вообще, предпочтительней снимать соответствующие атрибуты с файлов.
|
Время: 22:46.
© OSzone.net 2001-