如何在 Windows 中定期删除超过一定时间的文件?

如何在 Windows 中定期删除超过一定时间的文件?

我想在 Windows(特别是 Windows 7)中创建一个计划进程,每 3 小时删除所有文件夹中超过 24 小时的所有文件(就像 Unix find 一样-mtime +1)。基本上,Windows 相当于在我的 Unix cron 中配置了此配置:

find $TRANSITDIR -mtime +1 -exec rm -rf {} \;

虽然我似乎发现 Windows cron 的等效项是调度程序,我只是不知道 Windows 命令可以做到这一点。

有人有现成的调度脚本吗?

答案1

创建一个批处理文件,内容如下:

REM Remove files older than 1 day
forfiles /p %1 /s /m * /c "cmd /c del @path /q" /d -1

然后打开 Windows 任务计划程序。创建一个基本任务来运行程序,并将文件夹的路径作为参数放在引号中。

命令说明

REM是一条评论。

forfiles将为每个文件运行一个命令。/p %1定义文件所在的路径(%1表示传递给脚本的第一个命令行参数的值)。/s是递归的(进入子文件夹)。/m *.*是文件名掩码。/c "cmd /c del @path"指定要执行的命令。/d -1表示超过 1 天的文件。

在这种情况下,cmd /c del @pat /qh创建一个新会话并del在 上运行(删除文件)@path, 迭代的每个文件的文件路径forfiles/q用于安静模式,因此它不要求您确认目录

测试

替换delecho。这将打印每个将被删除的文件,而不是真正删除它。

答案2

这不是您想要做的,但我想说,在谈论 Windows 时,ccleaner 的自动清除功能值得考虑。我用它来查找和清理 Windows 机器的 tmp 文件。

它的 CLI 有限http://www.piriform.com/docs/ccleaner/advanced-usage/命令线参数#命令线参数用于CCleaner

另外,假设您是 shell 专家并且您说您需要它用于 W7,那么您可以尝试 powershell:

http://www.google.es/search?q=powershell+remove+x+day+older+files

相关内容