Windows
May 11, 2023
Скрипт удаления папок Windows старше N дней
Для запуска этого скрипта необходимо сохранить его в файл с расширением .ps1 и запустить его в PowerShell-консоли. Перед запуском скрипта необходимо установить значения переменных $days
и $path
в соответствии с вашими потребностями. Также убедитесь, что у вас есть необходимые права на удаление папок в указанной директории.
# Установите дату, старше которой необходимо удалить папки (в днях) $days = 30 # Установите путь к директории, в которой нужно удалить папки $path = "C:\Path\To\Directory" # Получаем текущую дату и вычитаем количество дней, чтобы получить дату, старше которой нужно удалить папки $date = Get-Date $oldDate = $date.AddDays(-$days) # Получаем список папок в указанной директории $folders = Get-ChildItem $path -Directory # Инициализируем переменные для отображения прогресса $totalFolders = $folders.Count $currentFolder = 0 # Проходим по каждой папке в списке и удаляем те, которые старше указанной даты foreach ($folder in $folders) { if ($folder.LastWriteTime -lt $oldDate) { Remove-Item $folder.FullName -Recurse -Force } $currentFolder++ $percentComplete = ($currentFolder / $totalFolders) * 100 Write-Progress -Activity "Removing old folders" -Status "$currentFolder of $totalFolders folders processed" -PercentComplete $percentComplete }
Вариация скрипта удаление папок старше N дней + удаление пустых папок:
# Установите дату, старше которой необходимо удалить папки (в днях) $days = 30 # Установите путь к директории, в которой нужно удалить папки $path = "C:\Path\To\Directory" # Получаем текущую дату и вычитаем количество дней, чтобы получить дату, старше которой нужно удалить папки $date = Get-Date $oldDate = $date.AddDays(-$days) # Получаем список папок в указанной директории $folders = Get-ChildItem $path -Directory # Инициализируем переменные для отображения прогресса $totalFolders = $folders.Count $currentFolder = 0 # Проходим по каждой папке в списке и удаляем те, которые старше указанной даты foreach ($folder in $folders) { if ($folder.LastWriteTime -lt $oldDate) { Remove-Item $folder.FullName -Recurse -Force } elseif ((Get-ChildItem $folder.FullName -Force | Measure-Object).Count -eq 0) { Remove-Item $folder.FullName -Recurse -Force } $currentFolder++ $percentComplete = ($currentFolder / $totalFolders) * 100 Write-Progress -Activity "Removing old and empty folders" -Status "$currentFolder of $totalFolders folders processed" -PercentComplete $percentComplete }