You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C++在Windows系统中自动清理超1个月的按天生成日志文件

日志按月自动清理极简实现方案

不用编写几十行代码,根据你使用的操作系统选对应方案即可:

Linux/Unix/macOS 环境(无需额外脚本,仅需配置定时任务)

依赖系统自带find命令+crontab定时任务即可实现:

  • 先测试匹配结果(避免误删,先确认输出的是需要清理的文件):
    find /你的日志目录绝对路径 -name "*.txt" -mtime +30 -type f
    -mtime +30代表匹配修改时间超过30天的文件,和你要求的「存放超过1个月清理」逻辑基本一致,如果你需要严格对齐自然月,可以调整为+31或者按文件名日期匹配。
  • 确认匹配结果无误后,在命令结尾加-delete即可实现删除:
    find /你的日志目录绝对路径 -name "*.txt" -mtime +30 -type f -delete
  • 配置定时执行:执行crontab -e打开定时任务编辑面板,新增一行配置即可实现每天凌晨2点自动清理:
    0 2 * * * find /你的日志目录绝对路径 -name "*.txt" -mtime +30 -type f -delete

Windows 环境(仅需3行批处理+系统任务计划)

依赖系统自带forfiles命令即可实现:

  • 新建文本文件,写入以下内容后保存为clean_log.bat:
    @echo off
    set logDir=你的日志目录绝对路径(比如C:\logs)
    forfiles /p %logDir% /s /m *.txt /d -30 /c "cmd /c del @path"
    
  • 打开Windows系统的「任务计划程序」,新建定时任务,触发频率设置为每天,执行动作选择运行上述bat文件即可。

补充:严格按文件名日期清理的实现(不依赖文件修改时间)

如果你的日志文件可能被修改过,导致修改时间和文件名中的日期不一致,可以用以下命令直接匹配文件名中的yyyy-mmdd日期判断:

  • 先测试匹配结果:
    find /你的日志目录绝对路径 -name "*.txt" | awk -F'[-.]' '{d=$2$3;cmd="date -d "d" +%s";cmd|getline ts;close(cmd);if(systime()-ts>2592000) print $0}'
    2592000是30天对应的秒数,可根据需求调整。
  • 确认结果无误后,在命令结尾加| xargs rm -f即可实现删除,再按照上面的步骤配置定时任务即可。

内容的提问来源于stack exchange,提问作者Stan Huang at Taiwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 00:15:02