如果TXT文件的总和大于50 MB,请删除文件夹?

时间:2013-02-18 14:45:56

标签: batch-file cmd

我有一台服务器正在运行并且每小时创建10KB日志TXT文件。当TXT文件达到50MB时,我想清除所有文件并保留10MB(因此删除40MB文件,剩下的10MB文件只是最新文件)。

我想使用dir,如:

dir *.txt

dir的最后一行之前有类似的内容:

9 Rép(s)  566 773 248 octets

然后我会提取这一行的最后一个数字,如果这个数字大于500万,那么我将删除所有前40MB的文件。

我不知道如何继续,有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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