0

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

我很难使用dir,例如:

dir *.txt

在最后一行的前一行dir是这样的:

9 Rép(s)  566 773 248 octets

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

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

4

1 回答 1

0

我认为您不能在不伤害自己的情况下批量执行此操作。很糟糕。

将 VBScript 与断开连接的记录集一起使用可能是一种更好的方法。

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
于 2013-02-18T19:48:31.250 回答