我想在 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
用于安静模式,因此它不要求您确认目录。
测试
替换del
为echo
。这将打印每个将被删除的文件,而不是真正删除它。
答案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