Удаление устаревших файлов с учетом минимального количества файлов Время чтения: 1 мин. 1218 просмотров Данный скрипт позволяет автоматически удалять файлы в каталоге, возраст которых превышает заданное количество дней. Однако, если общее количество файлов в каталоге меньше установленного порога, удаление не будет выполнено. Скрипт может быть полезен для управления архивами, например, при удалении старых резервных копий 1С или других систем.Основные параметры:$path – массив, содержащий пути к каталогам, где находятся файлы;$liveTimeDays – период хранения файлов в днях. Все файлы, которые старше этого срока, будут помечены для удаления;$minFileCounts – минимальное количество файлов, которые должны остаться в каталоге, даже если они старше указанного срока хранения в переменной $liveTimeDays. $path = @('С:\PATH_1', 'F:\PATH_2'); $liveTimeDays = 7; $minFileCount = 7; for ($index = 0; $index -lt $path.count; $index++) { # Проверка на существование каталога if (-not (Test-Path -Path $path[$index])) { continue; } # Получаем дату с которой удалять файлы $date = (Get-Date).AddDays($liveTimeDays * -1) # Получаем отфильтрованные по дате файлы исключая каталоги $files = Get-ChildItem -Recurse -Path $path[$index] | Where-Object { -not $_.PSIsContainer } | Where-Object -Property CreationTime -lt $date; foreach ($file in $files) { $dirs = Get-ChildItem $path[$index] -Recurse | Where-Object { -not $_.PSIsContainer }; if ($dirs.Count -le $minFileCount) { continue; } Write-Output $file.FullName Remove-Item $file.FullName } } В этом примере из каталогов C:\PATH_1 и F:\PATH_2, а также их подкаталогов, будут удалены все файлы, возраст которых превышает 7 дней. Если в каком-либо каталоге окажется менее 7 файлов, удаление в этом каталоге произведено не будет. Запуск скрипта можно настроить с помощью Планировщика задач Windows. Инструкции по настройке можно найти в документации. Метки:PowerShell