Любой язык - [решено] Скрипт для удаления повторяющихся папок
-
DJ Mogarych
Re: Любой язык - [решено] Скрипт для удаления повторяющихся папок
Выше добавил вывод объёма под каждой папкой в мегабайтах.
-
asaut
Re: Любой язык - [решено] Скрипт для удаления повторяющихся папок
Цитата DJ Mogarych:
Выше добавил вывод объёма под каждой папкой в мегабайтах.
Спасибо! *с пеной у рта*
Выше добавил вывод объёма под каждой папкой в мегабайтах.
Любой язык - [решено] Скрипт для удаления повторяющихся папок
Спасибо! *с пеной у рта*
-
DJ Mogarych
Re: Любой язык - [решено] Скрипт для удаления повторяющихся папок
Можно сделать ещё интереснее.
Код:
Код:
Код: Выделить всё
$report = @()
dir "\\srv\Projects\Work\2021" -Recurse -directory |? name -match '_comp_' |% {
if (($enum = $_.EnumerateFiles()).extension -eq '.exr') {
$obj = [pscustomobject]@{
'Каталог' = $_.fullname
'РазмерМБ' = ($enum.length |measure -Sum).sum / 1mb
}
$report += $obj
}
}
# Сортировать вывод по колонке размера, начиная с самого большого значения
$report |sort 'РазмерМБ' -Descending |fl-
asaut
Re: Любой язык - [решено] Скрипт для удаления повторяющихся папок
Цитата DJ Mogarych:
Можно сделать ещё интереснее.
Уже создал табличку и посчитал место занимаемое этим безобразием. Теперь ищу формулу как убрать ненужные версии.
Опять же есть много версий одного проекта нужно оставить только три последние в папке или вообще ничего не делать если их три и менее.
Можно сделать ещё интереснее.
Любой язык - [решено] Скрипт для удаления повторяющихся папок
Уже создал табличку и посчитал место занимаемое этим безобразием. Теперь ищу формулу как убрать ненужные версии.
Опять же есть много версий одного проекта нужно оставить только три последние в папке или вообще ничего не делать если их три и менее.
-
DJ Mogarych
Re: Любой язык - [решено] Скрипт для удаления повторяющихся папок
Добавлена колонка родительской папки, затем берутся уникальные значения родительских папок, выбираются каталоги с определённой родительской папкой, сортируются по последним цифрам, из списка убираются 3 последних каталога, остальные удаляются.
Уберите параметр -WhatIf, чтобы удалялось реально. С ним будет только выводиться информация.
Код:
Уберите параметр -WhatIf, чтобы удалялось реально. С ним будет только выводиться информация.
Код:
Код: Выделить всё
$report = @()
dir "\\srv\Projects\Work\2021" -Recurse -directory |? name -match '_comp_' |% {
if (($enum = $_.EnumerateFiles()).extension -eq '.exr') {
$obj = [pscustomobject]@{
'Каталог' = $_.fullname
'РазмерМБ' = ($enum.length |measure -Sum).sum / 1mb
'Родитель' = $_.Parent.FullName
}
$report += $obj
}
}
foreach ($parent in ($report.'Родитель' |sort -Unique)) {
$toDel = $report |? 'Родитель' -eq $parent |sort {$_.Каталог -replace '(\d+)$','$1'} |select -SkipLast 3
if ($toDel) {
$toDel.каталог |del -Recurse -WhatIf
}
}-
asaut
Re: Любой язык - [решено] Скрипт для удаления повторяющихся папок
Цитата DJ Mogarych:
Добавлена колонка родительской папки, затем берутся уникальные значения родительских папок, выбираются каталоги с определённой родительской папкой, сортируются по последним цифрам, из списка убираются 3 последних каталога, остальные удаляются.
Уберите параметр -WhatIf, чтобы удалялось реально. С ним будет только выводиться информация.
Спасибо, тестирую. Это займет какое-то время тк в прошлый раз я нашел пять тысяч папок. Напишу как прошло
Добавлена колонка родительской папки, затем берутся уникальные значения родительских папок, выбираются каталоги с определённой родительской папкой, сортируются по последним цифрам, из списка убираются 3 последних каталога, остальные удаляются.
Уберите параметр -WhatIf, чтобы удалялось реально. С ним будет только выводиться информация.
Любой язык - [решено] Скрипт для удаления повторяющихся папок
Спасибо, тестирую. Это займет какое-то время тк в прошлый раз я нашел пять тысяч папок. Напишу как прошло
-
asaut
Re: Любой язык - [решено] Скрипт для удаления повторяющихся папок
Цитата DJ Mogarych:
$report = @()
dir "\\srv\Projects\Work\2021" -Recurse -directory |? name -match '_comp_' |% {
if (($enum = $_.EnumerateFiles()).extension -eq '.exr') {
$obj = [pscustomobject]@{
'Каталог' = $_.fullname
'РазмерМБ' = ($enum.length |measure -Sum).sum / 1mb
'Родитель' = $_.Parent.FullName
}
$report += $obj
}
}
foreach ($parent in ($report.'Родитель' |sort -Unique)) {
$toDel = $report |? 'Родитель' -eq $parent |sort {$_.Каталог -replace '(\d+)$','$1'} |select -SkipLast 3
if ($toDel) {
$toDel.каталог |del -Recurse -WhatIf
}
}
Все сработало за исключением 'РазмерМБ'. Беглый просмотр показал успешность кода!
$report = @()
dir "\\srv\Projects\Work\2021" -Recurse -directory |? name -match '_comp_' |% {
if (($enum = $_.EnumerateFiles()).extension -eq '.exr') {
$obj = [pscustomobject]@{
'Каталог' = $_.fullname
'РазмерМБ' = ($enum.length |measure -Sum).sum / 1mb
'Родитель' = $_.Parent.FullName
}
$report += $obj
}
}
foreach ($parent in ($report.'Родитель' |sort -Unique)) {
$toDel = $report |? 'Родитель' -eq $parent |sort {$_.Каталог -replace '(\d+)$','$1'} |select -SkipLast 3
if ($toDel) {
$toDel.каталог |del -Recurse -WhatIf
}
}
Любой язык - [решено] Скрипт для удаления повторяющихся папок
Все сработало за исключением 'РазмерМБ'. Беглый просмотр показал успешность кода!
-
DJ Mogarych
Re: Любой язык - [решено] Скрипт для удаления повторяющихся папок
Размер можно получить, если вывести
Код:
Если использовать скрипт только для удаления лишних каталогов, то размер там не используется и строку 'РазмерМБ' внутри $obj можно закомментировать.
Код:
Код: Выделить всё
$report |sort 'РазмерМБ' -Descending |flЕсли использовать скрипт только для удаления лишних каталогов, то размер там не используется и строку 'РазмерМБ' внутри $obj можно закомментировать.