2013-02-18 74 views
0

我有一台服务器每小时运行并创建10KB日志TXT文件。当TXT文件达到50MB时,我想清除所有文件并只保留10MB(因此删除40MB文件,其余10MB将只是最新的文件)。如果TXT文件的总和大于50 MB,则删除文件夹?

我因子评分使用dir,如:

dir *.txt 

在的dir最后一行之前有这样的事情:

9 Rép(s) 566 773 248 octets 

那我就提取此行的最后一个号码,如果这个数字大于50000000,那么我将删除所有前40MB的文件。

我不知道如何进行,任何人都可以帮忙吗?

回答

0

我不认为你可以在不伤害自己的情况下批量做到这一点。厉害。

使用VBScript与disconnected recordset可能是一个更好的方法。

Const adBigInt = 20 
Const adDate = 7 
Const adVarChar = 200 

Const SizeThreshold = 52428800 'Byte 
Const SizeLimit  = 10485760 'Byte 

Set fso = CreateObject("Scripting.FileSystemObject") 

Set rs = CreateObject("ADOR.Recordset") 
rs.Fields.Append "path", adVarChar, 255 
rs.Fields.Append "date", adDate 
rs.Fields.Append "size", adBigInt 
rs.Open 

totalSize = 0 

For Each f In fso.GetFolder("C:\Temp").Files 
    rs.AddNew 
    rs("path") = f.Path 
    rs("date") = f.DateLastModified 
    rs("size") = f.Size 
    rs.Update 
    totalSize = totalSize + f.Size 
Next 

If totalSize > SizeThreshold Then 
    rs.Sort = "date ASC, size ASC" 
    rs.MoveFirst 

    Do Until rs.EOF Or totalSize < SizeLimit 
    rs.MoveFirst 
    fso.DeleteFile rs("path") 
    totalSize = totalSize - CLng(rs("size")) 
    rs.Delete 
    Loop 
End If 

rs.Close 
相关问题