Функция поиска старых файлов
14 Январь 2010
Попросили у меня совета как можно найти в папке созданные 10 дней назад файлы и удалить их. Подумав у меня родилась вот такая простенькая функция:
Function Search-OldFiles {
param ($day,$path,[switch]$search)
$help = @"
`n
`t Надо использовать следующий синтаксис функции:
`t -day - задаем кол-во дней
`t -path - указываем путь
`t -search - указываем, что необходимо только найти файлы (по умолчанию они удаляются)
`t------------------------------------------------------------------------------------
`t Пример:
`t Search-OldFiles -day 2 -path 'D:\Games' -search
"@
#--- проверяем существование параметров функции
if (!($day) -or !($path) ) {write-warning $help; return}
#--- рукурсивно просматриваем папки и выбираем файлы
foreach ($item in Get-ChildItem -LiteralPath $path -Recurse -Force | Where-Object {!$_.PSIsContainer}) {
#--- сравниваем дату создания файла
if ((Get-Date).adddays(-$day) -ge $item.CreationTime) {
#--- в зависимости от ключа search просто ищем или удаляем
if ($search) { '"' + $item.fullname + '"' }
else { $item.fullname | Remove-Item -Force -WhatIf }
}
}
}
param ($day,$path,[switch]$search)
$help = @"
`n
`t Надо использовать следующий синтаксис функции:
`t -day - задаем кол-во дней
`t -path - указываем путь
`t -search - указываем, что необходимо только найти файлы (по умолчанию они удаляются)
`t------------------------------------------------------------------------------------
`t Пример:
`t Search-OldFiles -day 2 -path 'D:\Games' -search
"@
#--- проверяем существование параметров функции
if (!($day) -or !($path) ) {write-warning $help; return}
#--- рукурсивно просматриваем папки и выбираем файлы
foreach ($item in Get-ChildItem -LiteralPath $path -Recurse -Force | Where-Object {!$_.PSIsContainer}) {
#--- сравниваем дату создания файла
if ((Get-Date).adddays(-$day) -ge $item.CreationTime) {
#--- в зависимости от ключа search просто ищем или удаляем
if ($search) { '"' + $item.fullname + '"' }
else { $item.fullname | Remove-Item -Force -WhatIf }
}
}
}

.gif)
