必须建立定期清理机制,通过forfiles命令按天数自动删除IIS陈旧日志,并用任务计划程序配置每周静默执行,确保C盘空间可控且不误删关键日志。

Windows服务器C盘因日志堆积导致空间告急,必须建立可重复执行的定期清理机制,否则每次都要手动翻找路径、判断文件日期、挨个删除,既耗时又容易误删关键日志。
确认IIS日志存放位置与站点对应关系
打开IIS管理器 → 左侧连接树中展开「网站」→ 右键目标网站(如「默认网站」)→ 选择「高级设置」→ 查看「ID」字段值,记下数字(例如1)。该数字即对应日志目录中的W3SVC编号,【务必核对ID与LogFiles下子目录名一致,否则可能清错其他网站日志】。
进入C:\inetpub\logs\LogFiles,观察是否存在W3SVC1、W3SVC2等子目录。每个子目录内含大量u_exYYMMDD.log格式文件,这是IIS按天生成的标准日志。
用forfiles命令编写自动清理脚本
方法一:直接创建批处理文件
新建一个文本文件,重命名为deliislog.bat,用记事本打开,粘贴以下内容:
@echo off
title 清理IIS陈旧日志
set log_dir="C:\inetpub\logs\LogFiles\W3SVC1"
set bak_dat=7
forfiles /p %log_dir% /s /m *.log /d -%bak_dat% /c "cmd /c echo 正在删除@relpath & del @file"
这行forfiles命令会递归扫描W3SVC1目录下所有.log文件,只删除早于7天的文件;/d -7是硬性时间过滤条件,比按文件名解析更可靠——因为有些日志可能因服务异常未按u_exYYMMDD命名。
方法二:支持多站点批量清理
若存在W3SVC1、W3SVC2两个网站,把set log_dir一行改为循环结构:
for %%i in (1 2) do (
forfiles /p "C:\inetpub\logs\LogFiles\W3SVC%%i" /s /m *.log /d -%bak_dat% /c "cmd /c del @file"
)
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
注意:此写法不输出提示,适合后台静默运行;首次使用前建议先将del @file换成echo @file测试匹配结果。
通过任务计划程序配置每周自动执行
第一步:按下Win+R,输入taskschd.msc回车,打开任务计划程序
第二步:右侧点击「创建基本任务」→ 输入名称「Weekly_IIS_Log_Cleanup」→ 点击下一步
第三步:触发器选「每周」→ 设置具体时间(推荐选凌晨2:00,避开业务高峰)→ 下一步
第四步:操作选「启动程序」→ 点击「浏览」,定位到刚才保存的deliislog.bat文件 → 下一步
第五步:勾选「当按计划运行时,使用最高权限运行」→ 完成
这一步必须启用最高权限,否则批处理无法删除被IIS进程锁定的日志文件。任务创建后不会立即运行,需手动右键该任务→「运行」验证一次。
验证清理效果并检查执行记录
脚本执行后,打开C:\inetpub\logs\LogFiles\W3SVC1,确认u_ex251103.log(2025年11月3日)及更早的.log文件已消失,而u_ex261109.log(2026年11月9日)仍存在。
查看执行是否成功:打开C:\Users\Administrator\.tableau\tsm\tsm.log(若部署了Tableau Server),搜索关键字“清理”;或直接在事件查看器→「应用程序和服务日志」→「Microsoft」→「Windows」→「TaskScheduler」→「Operational」中筛选该任务ID,确认状态为“任务完成”。

















