После некоторого гугления я понял, что это проще всего сделать на PowerShell.
Если он еще не установлен в системе, то берем тут -> Windows PowerShell 1.0 English-Language Installation Package for Windows Server 2003 . Возможно, выругается что нету .NET Framework Version 2.0 Redistributable Package. Тогда берем его там же, у Мракобесов: Microsoft .NET Framework Version 2.0 Redistributable Package (x64) или Microsoft .NET Framework Version 2.0 Redistributable Package (x86) . Также нужен как минимум Service Pack 1.
Сразу проверяем, разрешено ли у нас запускать скрипты:
Если он еще не установлен в системе, то берем тут -> Windows PowerShell 1.0 English-Language Installation Package for Windows Server 2003 . Возможно, выругается что нету .NET Framework Version 2.0 Redistributable Package. Тогда берем его там же, у Мракобесов: Microsoft .NET Framework Version 2.0 Redistributable Package (x64) или Microsoft .NET Framework Version 2.0 Redistributable Package (x86) . Также нужен как минимум Service Pack 1.
Инсталляция идет типа Далее, Далее, Финиш :)
Затем запускаем наш павер шелл и видим синенький экранчик с очень хорошим юзабилити (растягиваемый, работа с буфером мышкой - н ето что убогая стандартная CMD).
Get-ExecutionPolicy
Скорее всего нет - т. е. вернет что-то типа Restricted. Посему юзаем команду, меняющую "политику партии":
Set-ExecutionPolicy RemoteSigned
Теперь создаем где-нибудь текстовый файл с расширением .ps1 и пишем в него:
Скорее всего нет - т. е. вернет что-то типа Restricted. Посему юзаем команду, меняющую "политику партии":
Set-ExecutionPolicy RemoteSigned
Теперь создаем где-нибудь текстовый файл с расширением .ps1 и пишем в него:
#----- получаем текущую дату и пихаем в переменную ----# $Now = Get-Date #----- задаем количество дней старше которых файлы будут удаляться ----# $Days = "10" #----- задаем папку которая будет чиститься ----# $TargetFolder = "C:\Applications\Logs" #----- вот тут самое прикольное - задаем маску, то ли это просто расширение ----# #----- то ли это будут файлы какогото спец формата, например такие PROG_Date.log где Date - дата ----# $Extension = "PROG*.log" #----- здесь делаем дату за которой будут удаляться файлы ---# $LastWrite = $Now.AddDays(-$Days) #----- получаем список файлов. Если не надо рекурсии то убираем соотв. параметр ---# #----- если надо удалить тупо все файлы старше 10 дней то убираем -Include $Extension ---# $Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where{$_.LastWriteTime -le "$LastWrite"} #----- в цикле вербозно удаляем все полученные файлы ---# foreach ($File in $Files) { if ($File -ne $NULL) { write-host "Deleting File $File" -ForegroundColor "DarkRed" Remove-Item $File.FullName | out-null } else { Write-Host "No more files to delete!" -foregroundcolor "Green" } }
Напоследок, если хотим сделать shedule, то пишем батник с содержимым типа такого:
%SystemRoot%\system32\windowspowershell\v1.0\powershell.exe -command "c:\scripts\delete.ps1"
Где вначале идет путь к павер шеллу (у вас он может отличаться), а в конце - путь к файлу со скриптом.
Где вначале идет путь к павер шеллу (у вас он может отличаться), а в конце - путь к файлу со скриптом.
Затем пихаем батник в планировщик.
Усё, товарищи.
Комментариев нет:
Отправить комментарий