2013-02-18 72 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 
相關問題