Win Скрипты для удаления файлов определенной давности CMD, VBS и PowerShell

Для удаления файлов старше n дней, можно пользоваться скриптами CMD, VBS и PowerShell.

Рассмотрим варианты:

CMD

1. Я использовал утилиту командной строки forfiles.exe, входящую в состав Windows 7- Windows 2008 Server (когда-то она входила в Windows 2000 Resource Kit).
Одной командой удаляются все файлы из указанной папки и вложенных в нее.
Команда для выполнения: forfiles.exe /p %temp% /s /m *.* /d -14 /c «cmd /c del /q /f @file»
• Вместо %temp% (временной папки в профиле) подставляешь свою папку (параметр /p)
• Возраст файлов по умолчанию 14 дней (параметр /d), но можно задать любое значение
• Можно удалять файлы определенного расширения по маске (например, /m *.log)
• За рекурсивное удаление (во вложенных папках) отвечает параметр /s
Конечно, в скрипте вы можете использовать несколько команд, каждая из которых будет удалять заданную папку. Справка по использованию утилиты вызывается командой forfiles /?.
2. Для выполнения очистки папки по расписанию нужно создать скрипт с именем cleanup.cmd, содержащий любую из приведенных выше команд, и скопировать его в папку %windir%\system32.
Задание в планировщике создается одной командой: Schtasks.exe /Create /RL Highest /TN CleanUP /SC Weekly /D SUN /ST 14:00 /TR «%WINDIR%\system32\cleanup.cmd»
Задание с именем CleanUp будет выполняться:
• с наивысшими правами (параметр /RL)
• раз в неделю (параметр /SC)
• по воскресеньям (параметр /D)
• в 14:00 (параметр /ST)
Открой Пуск – Поиск – Планировщик заданий и увидишь в библиотеке планировщика задание CleanUp.

PowerShell

#Удаляет файлы согласно фильтру и даты создания
get-childitem "d:\t1\" -filter *.mxl -recurse | Where{$_.LastWriteTime -le (Get-Date).AddDays(-1)} | Remove-Item -Recurse -Force

Cirick86

$TargetDelNt = "D:\1" #путь до папки шары
$Del = "-3" #Количество хранимых дней
 
$CurrentDay = Get-Date
 
$ChDaysDel = $CurrentDay.AddDays($Del)
 
#Удаление файлов, дата создания которых больше 3 дней
GCI -Path $Taер rgetDelNt -Recurse | Where-Object {$_.CreationTime -LT $ChDaysDel} | RI -Recurse -Force 
 
#Удаление пустых папок
GCI -Path $TargetDelNt -Recurse | Where-Object {
$_.PSIsContainer -and 
@(Get-ChildItem -Path $_.Fullname -Recurse | Where { -not $_.PSIsContainer }).Count -eq 0 } | RI -Recurse

 

Добавить комментарий