Самым простым путем был бы .bat выполненный файл, выполненный еженедельно или ежемесячно.
cd \mylog\dir
mkdir archive
del /Q .\archive\*.log
move *.log .\archive
Если Вы хотите что-то более сложное, изучают загрузку cygwin инструментов, чтобы использовать un*x как команды или возможно изучить Powershell.
С VBScript, адаптированным от ScriptingAnswers
Dim fso, startFolder, OlderThanDate
Set fso = CreateObject("Scripting.FileSystemObject")
startFolder = "E:\temp" ' folder to start deleting (subfolders will also be cleaned)
OlderThanDate = DateAdd("d", -07, Date) ' 07 days (adjust as necessary)
DeleteOldFiles startFolder, OlderThanDate
Function DeleteOldFiles(folderName, BeforeDate)
Dim folder, file, fileCollection, folderCollection, subFolder
Set folder = fso.GetFolder(folderName)
Set fileCollection = folder.Files
For Each file In fileCollection
If file.DateLastModified < BeforeDate Then
' fso.DeleteFile(file.Path) # Modify this to delete after testing
WScript.StdOut.WriteLine (file.Path)
End If
Next
Set folderCollection = folder.SubFolders
For Each subFolder In folderCollection
DeleteOldFiles subFolder.Path, BeforeDate
Next
End Function
Можно запустить этот скрипт с CScript
@Jason: хорошая утилита, FORFILES от Набора Ресурса
Запланируйте пакетный файл для обработки этого.
Эта строка удалит все файлы (*. *) в c:\mydirectory, которые являются более старыми, чем 14 дней:
FORFILES -pc:\mydirectory -s -m*.* -d-14 -c"DEL @FILE"
Помещенный, что в текстовом файле, переименуйте его к чему-то как "deletefiles.bat" и запланируйте его.
Я не протестировал это, но должен быть достаточно легок попробовать.
Править: При использовании этого удостоверьтесь, что Вы понимаете то, что происходит - флаг-s говорит этому рекурсивно вызывать подкаталоги, и это не может быть тем, что Вы хотите произойти. Кроме того, Вы, возможно, должны указать некоторые флаги для команды DEL также. :)
Править: Реализованный, что необходимо загрузить материал с Microsoft для FORFILES для работы. Мне нравится принятое решение также, так как у Вас не должно быть ничего специального. Единственная проблема состоит в том, что это только происходит каждые две недели вместо того, чтобы выполнять процесс ежедневно для удаления всех вещей, более старых, чем 14 дней. Поскольку, что это стоит. :P
Почему Вы не пишете пакетный файл или powershell сценарий и планируете его?
Сценарий для удаления файлов, более старых, чем указанная дата.
Это довольно тривиально, чтобы сделать, если у Вас есть жемчуг (или подобный) установленный на сервере:
#!perl
foreach my $file (</path/to/logs/*.log>) {
next unless -M $file > 14;
print "Deleting $file...\n";
# unlink $file or die "Failed to remove $file: $!";
}
Строка, которая на самом деле делает удаление, комментируется, так как могли бы быть дети в доме :)