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
}