删除早于 (x) 天的文件?

Jef*_*ood 34 windows command-line-interface

删除给定文件夹中早于 (n) 天的所有文件的 Windows 命令行选项是什么?

另请注意,这些文件可能有数千个,因此forfiles在这里使用 shellcmd并不是一个好主意..除非您喜欢生成数千个命令 shell。我认为这是一个非常讨厌的黑客,所以让我们看看我们是否可以做得更好!

理想情况下,内置于(或可轻松安装到)Windows Server 2008 中。

Jef*_*ood 45

我环顾四周,找到了一种powershell方式

从指定文件夹中删除所有超过 8 天的文件(带预览)

dir |? {$_.CreationTime -lt (get-date).AddDays(-8)} | del -whatif
Run Code Online (Sandbox Code Playgroud)

(删除 -whatif 以使其发生)


Pau*_*lum 7

喜欢 Jeff 的 PowerShell 命令,但对于没有 PowerShell 的 Windows 机器的替代 vbs 解决方案,您可以尝试以下操作。

另存为<filename>.vbs并执行:

<filename>.vbs <target_dir> <NoDaysSinceModified> [Action]
Run Code Online (Sandbox Code Playgroud)

第三个参数[Action]是可选的。没有它,比<NoDaysSinceModified>将列出的文件更旧。将其设置为D将删除早于<NoDaysSinceModified>

例子

PurgeOldFiles.vbs "c:\Log Files" 8
Run Code Online (Sandbox Code Playgroud)

列出c:\Log Files超过 8 天的所有文件

PurgeOldFiles.vbs "c:\Log Files" 8 D
Run Code Online (Sandbox Code Playgroud)

删除c:\Log Files超过 8 天的所有文件

注意:这是SQLServerCentral.com上的Haidong Ji 脚本的修改版本

<filename>.vbs <target_dir> <NoDaysSinceModified> [Action]
Run Code Online (Sandbox Code Playgroud)