0

サーバーを実行し、1 時間ごとに 10 KB のログ TXT ファイルを作成しています。TXT ファイルが 50MB に達したら、すべてを消去して 10MB だけを保持したいと思います (つまり、40MB のファイルを削除すると、残りの 10MB は最新のファイルだけになります)。

私は次のdirように使用することを考えました:

dir *.txt

の前の最後の行にdirは、次のようなものがあります。

9 Rép(s)  566 773 248 octets

次に、この行の最後の番号を抽出します。この番号が 50 000 000 より大きい場合は、ファイルの最初の 40 MB をすべて削除します。

進め方がわからないのですが、誰か助けてもらえますか?

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 に答える