可能的重复:
批处理文件删除超过N天的文件

我想运行一个计划的 Windows 任务,从目录中删除超过 2 周的所有文件。

原因是这些是 IIS 和 Tomcat 日志,填满了我的服务器,但我想保留最新的日志,以防我需要调查问题。

有谁知道一种简单的方法来做到这一点?

干杯

尼格

有帮助吗?

解决方案

确切的语法: FORFILES /p d:\new /d -30 /m * /c "cmd /c del @file"

其他提示

最简单的方法是每周或每月运行 .bat 运行文件。

cd \mylog\dir
mkdir archive
del /Q .\archive\*.log
move *.log .\archive

如果您想要更复杂的东西,请考虑下载 cygwin 工具以使用 un*x 之类的命令,或者可能查看 Powershell。

用VBScript,改编自 脚本化答案

Dim fso, startFolder, OlderThanDate
Set fso = CreateObject("Scripting.FileSystemObject")

startFolder = "E:\temp"           ' folder to start deleting (subfolders will also be cleaned)

OlderThanDate = DateAdd("d", -07, Date)  ' 07 days (adjust as necessary)

DeleteOldFiles startFolder, OlderThanDate

Function DeleteOldFiles(folderName, BeforeDate)
    Dim folder, file, fileCollection, folderCollection, subFolder

    Set folder = fso.GetFolder(folderName)

    Set fileCollection = folder.Files

    For Each file In fileCollection
        If file.DateLastModified < BeforeDate Then
            ' fso.DeleteFile(file.Path)    # Modify this to delete after testing
            WScript.StdOut.WriteLine (file.Path)
        End If
    Next

    Set folderCollection = folder.SubFolders
    For Each subFolder In folderCollection
        DeleteOldFiles subFolder.Path, BeforeDate
    Next

End Function

您可以使用 CScript 运行此脚本

@杰森:不错的实用程序,来自资源工具包的 FORFILES

安排一个批处理文件来处理这个问题。

此行将删除 c:\mydirectory 中超过 14 天的所有文件 (*.*):

FORFILES -pc:\mydirectory -s -m*.* -d-14 -c"DEL @FILE"

将其放入文本文件中,将其重命名为“deletefiles.bat”之类的名称并安排它。

我还没有测试过这个,但应该很容易尝试。


编辑:如果您使用它,请确保您了解正在发生的情况 - -s 标志告诉它递归子目录,但这可能不是您想要发生的情况。此外,您可能还需要为 DEL 命令指定一些标志。:)


编辑:意识到你需要 从微软下载东西 为了让 FORFILES 工作。我也喜欢公认的解决方案,因为你不需要有任何特别的东西。唯一的问题是,它每两周才会发生一次,而不是每天运行一个进程来删除所有超过 14 天的内容。为了那是值得的。:P

为什么不编写一个批处理文件或 powershell 脚本并安排它呢?

脚本 用于删除早于指定日期的文件。

如果您在服务器上安装了 perl (或类似的),那么这样做是相当简单的:

#!perl
foreach my $file (</path/to/logs/*.log>) {
  next unless -M $file > 14;
  print "Deleting $file...\n";
  # unlink $file or die "Failed to remove $file: $!";
}

实际执行删除的行已被注释掉,因为房子里可能有孩子:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top