' Скрипт удаляет в указанных папках файлы,
' старше указанного кол-ва дней
' Указываем попарно кол-во сохраняемых дней и путь папки с файлами
MyFolder = Array(5, "C:\Soft1\Arc\In", _
5, "C:\Soft1\Arc\Out", _
2, "E:\DelTmp", _
15, "C:\Soft2\UTM\Arc", _
3, "C:\Soft3")
N = UBound(MyFolder)
Set FSO = CreateObject("Scripting.FileSystemObject")
For i = 0 To N Step 2
On Error Resume Next
Set Folder = FSO.GetFolder(MyFolder(i + 1))
If Err.Number = 0 Then
OldDay = DateAdd("d", -MyFolder(i), Date)
Set Files = Folder.Files
For Each f In Files
If f.DateLastModified < OldDay Then
On Error Resume Next
FSO.DeleteFile MyFolder(i + 1) + "" + f.Name, True
End If
Next
End If
Next
@Echo Off
rem ------------------------------------------------------------------
rem Удаляем в указанных директориях файлы старше указанного кол-ва дней
rem Вызываем последовательно для каждой очищаемой директории процедуру
rem Call :DelOldFiles "Путь к папке" -Дни
rem "Путь к папке" - в кавычках без \ на конце
rem -------------------------------------------------------------------
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
Call :DelOldFiles "C:\TTTTT\AAAAA\DTS\Arc\In" -5
Call :DelOldFiles "C:\TTTTT\AAAAA\DTS\Arc\Out" -5
Call :DelOldFiles "C:\UTM\Arc" -15
Call :DelOldFiles "C:\Обновления-2009\Plat\{Сделано}" -5
GoTo :Eof
:DelOldFiles
rem --------------------------------------
rem Процедурка удаляет в директории %1
rem файлы старше указанного кол-ва дней %2
rem по отношению к системной дате
rem --------------------------------------
Call :FromNow %2 %Date%
FOR %%f IN ("%~1\*.*") DO (
Set dFile=%%~tf
Set dFile=!dFile:~6,4!!dFile:~3,2!!dFile:~0,2!
If !dFile! LSS %yyyymmdd% Del "%%f"
)
GoTo :Eof
:FromNow
rem --------------------------------------------------
rem Процедурка дату формата dd.mm.yyyy %2
rem пересчитывает на указ число дней (+-) %1
rem Формирует в ответе переменную %yyyymmdd%
rem --------------------------------------------------
SetLocal
Set DT=%2
Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100
Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4
Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001
Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11
Set /A J=J+2-12*L,I=100*(N-49)+I+L
Set /A yyyy=I,mm=100+J,dd=100+K
EndLocal& Set yyyymmdd=%yyyy%%mm:~-2%%dd:~-2%
GoTo :Eof
' Скрипт удаляет в указанных папках файлы,
' старше указанного кол-ва дней
' ------------------------------------------------------------------
Public FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
' Для каждой обрабатываемой папки вызываем процедуру DelOldFiles
' Указываем попарно кол-во сохраняемых дней и путь папки с файлами
' ------------------------------------------------------------------
DelOldFiles 5, "C:\TTTTT\AAAAA\DTS\Arc\In"
DelOldFiles 5, "C:\TTTTT\AAAAA\DTS\Arc\Out"
DelOldFiles 2, "E:\DelTmp"
DelOldFiles 15, "C:\UTM\Arc"
DelOldFiles 3, "C:\Обновления-2009\Plat\{Сделано}"
' ------------------------------------------------------------------
Sub DelOldFiles(dFile, nDir)
On Error Resume Next
Set Folder = FSO.GetFolder(nDir)
If Err.Number = 0 Then
OldDay = DateAdd("d", -dFile, Date)
Set Files = Folder.Files
For Each f In Files
If f.DateLastModified < OldDay Then
On Error Resume Next
FSO.DeleteFile nDir + "" + f.Name, True
End If
Next
End If
End Sub
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.