如何从目录中删除旧文件,同时在Windows上保留最新文件

如何从目录中删除旧文件,同时在Windows上保留最新文件

How do I delete old files from a directory while keeping the most recent ones on Windows

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Batch file to delete files older than N days

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

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

有没有人知道这样做的简单方法?

干杯

的NiGe


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


使用VBScript,改编自ScriptingAnswers

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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运行此脚本

@Jason:很好的实用程序,来自Resource Kit的FORFILES


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

1
2
3
4
cd \mylog\dir
mkdir archive
del /Q .\archive\*.log
move *.log .\archive

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


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

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

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

将它放在一个文本文件中,将其重命名为"deletefiles.bat"并安排它。

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

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

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


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

1
2
3
4
5
6
7
#!perl
foreach my $file (</path/to/logs/*.log>) {
  next unless -M $file > 14;
  print"Deleting $file...
";
  # unlink $file or die"Failed to remove $file: $!";
}

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


为什么不编写批处理文件或PowerShell脚本并安排它?

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


推荐阅读

    linux命令添加文件?

    linux命令添加文件?,工作,简介,数据,系统,文件,命令,操作,文件名,内容,终端,l

    linux文件中剪切命令?

    linux文件中剪切命令?,位置,系统,工作,命令,发行,连续,标准,终端,文件,目录,l

    linux存储文件命令?

    linux存储文件命令?,系统,地址,工作,命令,软件,电脑,标准,底部,信息,文件,lin

    linux快速删除命令行?

    linux快速删除命令行?,系统,软件,名称,数据,命令,文件,档案,不了,电脑,通用,l

    linux保存命令文件?

    linux保存命令文件?,系统,状态,命令,文件,第一,管理,电脑,模式,编辑,终端,lin

    删除linux文件命令?

    删除linux文件命令?,名称,不了,文件夹,命令,文件,目录,方法,指令,子目录,选

    linux文件录入命令?

    linux文件录入命令?,系统,命令,网络,标准,时间,密码,名字,管理,文件,文件夹,L

    linux下删除用户命令?

    linux下删除用户命令?,系统,代码,邮箱,用户组,命令,用户,名称,管理,电脑,账

    linux命令移除文件夹?

    linux命令移除文件夹?,命令,文件夹,通用,不了,数据,名称,档案,系统,文件,目

    linux的删除所有命令?

    linux的删除所有命令?,不了,系统,名称,命令,文件夹,文件,目录,档案,数据,环

    在linux文件后加命令?

    在linux文件后加命令?,系统,工作,命令,工具,电脑,基础,管理,情况,第一,简介,L

    linux命令删除文件夹?

    linux命令删除文件夹?,系统,名称,环境,文件夹,不了,命令,文件,数据,档案,目

    linux命令看文件编码?

    linux命令看文件编码?,状态,系统,文件,工具,名称,数据,命令,格式,汉字,以下,L

    linux删除用什么命令?

    linux删除用什么命令?,档案,系统,命令,文件夹,文件,不了,名称,目录,终端,指

    linux删除用户组命令?

    linux删除用户组命令?,管理,系统,密码,电脑,名称,用户,用户组,名字,信息,工

    linux编辑文件的命令?

    linux编辑文件的命令?,系统,地址,工作,状态,命令,电脑,信息,管理,目录,终端,l

    linux命令行关掉文件?

    linux命令行关掉文件?,地址,状态,工作,系统,信息,命令,名字,电脑,编辑,文件,l

    linux删除整行的命令?

    linux删除整行的命令?,系统,标的,数字,连续,档案,命令,光标,文件,模式,编辑,

    linux命令穿件文件夹?

    linux命令穿件文件夹?,系统,名字,密码,名称,首次,命令,文件夹,文件,不了,时

    linux命令行怎么删除?

    linux命令行怎么删除?,系统,不了,名称,文件夹,命令,文件,档案,目录,指令,子