任务计划程序可通过调度wevtutil导出命令实现Windows事件日志自动备份,支持按日期建目录、选择性导出(如近24小时Application/System日志、完整或近7天Security日志),并可配合清理、压缩与失败验证提升可靠性。
任务计划程序本身不直接备份
win
dows事件日志,但它可以调度命令或脚本,定期导出并保存日志文件(如application、security、system),从而实现“自动备份”的效果。关键在于用
导出日志为.evtx文件,再配合robocopy或copy命令归档,最后用计划任务定时执行。
准备日志导出脚本
先创建一个批处理文件(例如
),内容如下:
@echo offset "datestr=%date:~0,4%%date:~5,2%%date:~8,2%"set "logdir=D:\Backup\WindowsLogs\%datestr%"mkdir "%logdir%" 2>nulwevtutil qe Application /q:"*[System[(Level=1 or Level=2 or Level=3) and TimeCreated[timediff(@SystemTime) <= 86400000]]]" /f:evtx /rd:true /ow:true "%logdir%\Application_Recent.evtx"wevtutil qe System /q:"*[System[(Level=1 or Level=2 or Level=3) and TimeCreated[timediff(@SystemTime) <= 86400000]]]" /f:evtx /rd:true /ow:true "%logdir%\System_Recent.evtx"wevtutil epl Security "%logdir%\Security_All.evtx" 2>nulecho 日志导出完成: %logdir%
该脚本按日期建文件夹,只导出过去24小时内高/中/低级别事件(Application/System),Security日志则完整导出(需管理员权限)
确保覆盖旧文件,
允许覆盖,避免失败
请提前在D盘创建
主目录,并确保有写入权限
配置计划任务触发执行
打开任务计划程序(
),使用“创建基本任务”向导:
名称填“每日导出Windows日志”,描述可写“备份Application/System/Security日志”
触发器选“每天”,时间建议设为凌晨2:00(系统空闲且不影响登录)
操作选“启动程序”,程序栏填
,参数栏填
(路径替换成你保存bat的真实位置)
务必勾选“使用最高权限运行”,否则Security日志无法导出
增强可靠性与维护建议
仅导出还不够,长期运行需考虑清理与验证:
ClawUsage Windows Hardlock
通过聊天(Telegram / 飞书)执行本地 `clawusage` 监控命令。当用户输入 `/clawusage ...`,或提出“查看 Codex 用量”、“开启/关闭自动…”等请求时触发使用。
下载
在bat末尾追加清理命令,例如:
,自动删除30天前的旧日志文件夹
将导出命令中的
改为
可只导出最近7天,减小文件体积
每次执行后检查
是否存在且大小非零,可用PowerShell简单验证:
替代方案:用PowerShell一步到位
若习惯PowerShell,可新建
:
$date = Get-Date -Format "yyyyMMdd"$dest = "D:\Backup\WindowsLogs\$date"New-Item $dest -ItemType Directory -Force | Out-NullWevtUtil.exe epl Application "$dest\Application.evtx"WevtUtil.exe epl System "$dest\System.evtx"WevtUtil.exe epl Security "$dest\Security.evtx"# 自动压缩当日文件夹Compress-Archive -Path "$dest\*" -DestinationPath "$dest.zip" -ForceRemove-Item "$dest" -Recurse
在任务中调用PowerShell时,参数需写为:
注意PowerShell策略默认限制脚本执行,必须加
绕过
wevtutilbackup_logs.bat/rd:true/ow:trueD:\Backup\WindowsLogstaskschd.msccmd.exe/c "D:\Scripts\backup_logs.bat"forfiles /p "D:\Backup\WindowsLogs" /d -30 /c "cmd /c if @isdir==TRUE rmdir /s /q @path"wevtutil epl Securitywevtutil qe Security /q:"*[System[TimeCreated[timediff(@SystemTime) <= 604800000]]]"D:\Backup\WindowsLogs\%date%\*.evtxif (Get-ChildItem "D:\Backup\WindowsLogs\$env:DATE\*.evtx" -ErrorAction SilentlyContinue) { Write-Host "OK" } else { Write-EventLog -LogName Application -Source "TaskScheduler" -EntryType Error -EventId 999 -Message "Log export failed" }backup_logs.ps1-ExecutionPolicy Bypass -File "D:\Scripts\backup_logs.ps1"-ExecutionPolicy Bypass