讲师中心 微信公众号
AI工具推荐 视频效率加速

storage-analyzer-windows

Polar Sponsor
爱发电 赞助
.NET 9.0

【做什么】纯 Windows 只读存储分析 — 扫描 12+ 组目标(含 Installer/ProgramData/回收站)→ 三灯分级(🟢可自动清/🟡需判断/🔴建议卸载)→ 交互式 HTML 报告 + 本地服务一键删。 【何时用】用户抱怨磁盘空间不足、要求清理/分析/查看空间占用、想知道什么东西吃硬盘。 【触发词】磁盘满了/C盘满了/D盘满了/空间不够/清理空间/清理磁盘/清理C盘/占空间/ 存储分析/磁盘分析/看一下存储/电脑空间/storage analysis/disk cleanup/清缓存/

存储分析器 Windows QQ Windows , äHTML + + + + 1-2.scan.py + 12 + , + TEMP% storage sc

功能概述

存储分析器 Windows QQ Windows , äHTML + + + + 1-2.scan.py + 12 + , + TEMP% storage sc是一项面向实际任务的技能,主要用于Storp 3.;Agent (v) + jSONXIMP% storage analysis.json.Stet 4.se.。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;

结果检查与注意事项

涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

Storage Analyzer Windows

纯 Windows 只读存储分析,交互式 HTML 报告 + 一键清理。

阶段 谁执行 做什么 产出
Step 1-2 scan.py 脚本 只读扫描 12 组目标,算大小 %TEMP%storage_scan.json
Step 3 Agent (你) 读参考→探查→三灯分级→写 JSON %TEMP%storage_analysis.json
Step 4 server.py 脚本 启动本地服务 → 交互式网页 http://127.0.0.1:端口/
Step 5 Agent (你) 用 preview_url 打开 + 对话给摘要 浏览器预览 + 文字结论

速览:用户说"磁盘满了" → 跑 scan.py --quick(0.3s) 看概况 → 需要详情再跑全量(9s) → 按附录A模板写分析JSON → server.py 启动交互式服务 → 自动用 preview_url 打开 → 给用户一句话摘要。全程只读扫描,交互式网页支持一键清理。

约束规则

铁律

  • 全程只读扫描。 只能跑 os.scandir / shutil.disk_usage / 列目录。
  • 删除命令只展示,不执行。 报告里的清理命令供用户在终端确认后运行。 即使用户在对话里说"帮我删",也要先停下确认,不要直接代跑。
  • 系统目录保护。 C:Windows 除了 Installer / Temp / SoftwareDistribution 之外不扫描不操作。
  • 回收站警告。 清空回收站前必须明确告知空间释放量。
  • 长路径处理。 Windows 路径 >260 字符时使用 \? 前缀。

⏸️ 确认门

Step 3 完成后,必须暂停,向用户展示:

  1. Top 5 摘要(表格:排名/名称/大小/分级/一句话说明)
  2. 三灯汇总(🟢 X 项约 Y GB / 🟡 X 项约 Y GB / 🔴 X 项约 Y GB)
  3. 问用户:"分级结果如上,是否继续生成报告?还是需要调整?"

用户同意后才进入 Step 4。 如果用户要求调整,只调用户指定的项,不要推翻全部分级。

异常处理

异常场景 处理方式
Python 未安装 提示用户安装 Python 3.10+:winget install python3 或从 python.org 下载。不要用 python3 命令,Windows 上是 python 或 py -3。
scan.py 输出为空 检查 %TEMP%storage_scan.json 是否存在且非空。为空则重新扫描并加 2>&1 捕获 stderr 排查错误。
扫描结果全 0(空盘) 报告直接给摘要"磁盘基本为空,无需清理"。不跑 Step 3 分析。
某个 target 目录不存在 跳过,不给 denied。如 C:WindowsInstaller 在某些精简版 Windows 上不存在。
server.py 端口被占用 server.py 使用端口 0(随机),不会冲突。如遇异常,检查防火墙/杀毒软件是否拦截 127.0.0.1 本地回环。仅在用户要求服务模式时使用。
build_report.py 写入桌面失败 检查桌面路径是否可写,如被 OneDrive 同步占用则改写到 %USERPROFILE% 或 %TEMP%。
浏览器打不开 手动复制终端输出的 URL 到浏览器。或用 --no-browser 参数跳过自动打开。
recycle_bin 扫描为空 原因:普通用户无权读 C:$Recycle.Bin。给提示:"回收站大小无法直接读取,请右键桌面回收站查看属性"。
磁盘接近满(<1GB 可用) 优先使用 --quick 模式避免扫描写出大量 JSON 占用最后空间。写 analysis JSON 时确认 %TEMP% 有足够空间。
权限拒绝(denied) 扫描结果中 denied 标注的目录,在报告中列出并说明"可能遗漏体量"。不要尝试 runas 提权。

执行流程

Step 1 快速扫描(可选,0.5s 内)

python scripts/scan.py --quick > %TEMP%storage_scan.json

仅扫描一级子目录大小(跳过递归),大文件自动聚合显示。 适用场景:快速判断"有没有大问题"。

Step 2 全量扫描

python scripts/scan.py > %TEMP%storage_scan.json

扫描 12 组目标(详见 references/windows.md),耗时约 9-15s(SSD)。 读不到的目录标 denied。

Step 3 分析与分级

先读 references/windows.md 了解布局规则,再读扫描 JSON。

按 附录A 的 6 条检查清单逐条执行,按 附录B 的模板写出 analysis JSON。

核心决策规则(详见附录A):

  • 🟢 可自动清理 — 纯缓存/临时文件/可再生,正例:pip Cache,反例:node_modules
  • 🟡 需人工判断 — 含用户数据或需判断成本,正例:WeChat Files,反例:WindowsSystem32
  • 🔴 建议卸载 — 大应用/重复安装,正例:不再用的 MobileAppEngine,反例:C:Windows
  • 其他 → 不展示(归蓝色)

Step 4 启动交互式服务并自动打开

使用 PowerShell Start-Process 以独立进程启动(不受 Bash 超时影响):

Start-Process -FilePath "python" -ArgumentList "scripts/server.py","%TEMP%storage_analysis.json","--no-browser","--port-file","%TEMP%storage_server_url.txt" -WindowStyle Hidden

启动后:

  1. 等待 2 秒读取 %TEMP%storage_server_url.txt 获取 URL
  2. 健康检查 GET /health 确认服务正常
  3. 用 Start-Process 在用户默认浏览器中打开 URL(不要用 preview_url,内嵌浏览器无法正确执行交互式功能)
  4. 同时可用 preview_url 在内嵌面板中预览(仅查看,一键清理功能需在真实浏览器中使用)

这是默认模式,交互式网页支持:

  • 🟢 一键清理全部 — 确认面板 + 逐项串行删除 + 进度反馈
  • 🟢 单项移到废纸篓 / 直接删除
  • 🟡 在资源管理器打开 / 安全子路径移废纸篓
  • 🔴 在资源管理器打开(去卸载)
  • 折叠卡片、锚点导航、命令复制

可选:静态报告模式(仅查看,不能操作删除):

python scripts/build_report.py %TEMP%storage_analysis.json %USERPROFILE%Desktopstorage-report.html

纯静态只读 HTML 文件,不含删除功能。仅在用户明确要求静态报告时使用。

Step 5 摘要总结

报告打开后,给一段结论先行的摘要:总可释放估算、最该先清的 2-3 项、风险最高的一项。细节让用户看网页。

附录A:分析检查清单

逐条执行,每完成一条在脑中打勾。

  • 1. 挑 Top 5:按 size_kb 排序全部 groups 条目,取前 5,判定类型标签。 标签按优先级从高到低匹配,命中即停止,后面的不再考虑:

    优先级 标签 释义 判定依据
    1 系统文件 操作系统运行依赖的核心文件与组件仓库,误删可能导致系统不稳定、功能异常或无法启动 C:Windows 下除 Temp/SoftwareDistribution 外的全部子目录, C:Boot, EFI 分区, pagefile.sys, hiberfil.sys
    2 应用程序文件 应用程序安装目录下的全部文件(含 exe/dll/资源/配置),删除将导致对应应用无法运行 C:Program Files*, C:Program Files (x86)*, %LOCALAPPDATA%Programs* 下的应用目录
    3 虚拟机镜像 虚拟机/模拟器的磁盘镜像文件,删除将导致虚拟机数据完全丢失且不可恢复 EmulatorSdk 镜像, WSL vhdx, Hyper-V 虚拟硬盘, VMware .vmdk, VirtualBox .vdi
    4 应用数据 应用产生的不可再生或具有持久价值的用户个人数据,通常位于 AppData 及其子目录 WPS 模板, 微信聊天记录, 钉钉消息, 邮箱本地数据
    5 应用缓存 面向最终用户的应用产生的可再生临时文件,删除不影响功能、不丢用户数据 浏览器 Cache, 缩略图缓存, 微信/QQ 图片缓存, %TEMP%*, Office 最近文件索引
    6 开发缓存 包管理器/构建工具/IDE 产生的可再生中间文件,删除后可通过重新下载或构建恢复 pip Cache, .npm, .gradle, .m2/repository, Cargo target/, Yarn cache, NuGet packages
    7 用户文件 用户主动创建/编辑/保存的个人文档、工程文件、自建图片等 Desktop, Documents, Pictures, WorkBuddy* 项目目录
    8 媒体内容 从网络下载或应用缓存的消费型音视频文件,常见于 Downloads/Videos/Music 及各 App 离线目录 Downloads 里的 .mp4/.mkv/.avi, App 离线视频缓存, Music
    9 下载内容 Downloads 目录下用户通过浏览器/下载器获取后未整理的文件(安装包、压缩包、文档等) Downloads*.exe, Downloads*.msi, Downloads*.zip
    10 回收站 Windows 回收站内容 C:$Recycle.Bin, 各盘符 $Recycle.Bin
    11 其他 以上均不匹配的兜底分类 —

    互斥规则:按优先级 1→11 依次匹配,命中即停。例如:Downloads 下的安装包优先匹配 9(下载内容),而非 8(媒体内容);%TEMP% 下的编译中间文件优先匹配 6(开发缓存),而非 5(应用缓存)。

  • 2. 探查神秘大目录:对名称含 UUID/GUID/SSID 的目录、大小 >1GB 的 ProgramData 子目录、不明用途的隐藏目录 → ls 查看内部结构,查出归属。 例:kingsoft/wps_international/addons 实为国际版 WPS 的冗余插件。

  • 3. 三灯分类(只分"存在清理决策"的项,正常应用/系统文件归蓝色不展示):

    🟢 可自动清理 — 纯缓存/临时文件/安装包残留/可再生不丢用户数据

    • ✅ 正例:浏览器 Cache、%TEMP%*、--updater 目录、pip Cache(开发缓存可再生)、IntelliJ IDEA caches
    • ❌ 反例:node_modules(项目依赖,删了项目跑不了)、AppDataRoamingMicrosoft(Office 设置不可再生)、微信聊天记录(用户数据)
    • 必填 trash_paths[]、commands[{label,cmd}]、kill_processes[]。
    • ⚠️ trash_paths 不能为空,漏了按钮就不出现。

    🟡 需人工判断 — 含用户数据或有判断成本

    • ✅ 正例:WeChat Files(聊天记录含重要数据)、Downloads 文件夹(可能有重要文件未整理)、WPS 模板(含自定义)、VMware 虚拟机镜像(大小巨大但可能还在用)
    • ❌ 反例:C:WindowsInstaller 不能手删(用 DISM 清理)、C:WindowsWinSxS 不能手删(系统组件仓库)、C:WindowsSystem32 不能手删
    • 必填 content_profile、why_manual、disposal、risk。
    • 有核实过的安全子路径时 → trash_paths(🟡 只能移废纸篓,永不给 rm)。
    • 目录是 App 内部格式 → open_note 字段说明。
    • ⚠️ 口吻中性如产品说明,不写"我发现/提醒注意"。

    🔴 建议卸载(别手删) — 大应用/重复安装/想卸载的项

    • ✅ 正例:不再用的 MobileAppEngine(7.6GB)、EdrawSoft(1.2GB)、Autodesk(2GB+)
    • ❌ 反例:C:Windows(操作系统本身)、Microsoft Office(如果还在用)、dotnet(系统运行时依赖)、Git(开发必备工具)
    • 必填 why_keep、indirect_release(具体卸载步骤,可照做不是空话)、app_paths[]。
    • 不给删除按钮,只给"在资源管理器打开(去卸载)"。
  • 4. 数量检查:green+yellow+red 的总信息量应「一眼能看完」。 如果某级超过 10 项,挑最重要的列,其余合并到 summary。

  • 5. 大小字段规范:用"约 14 GB""合计约 8.6 GB"格式。 "约"已表示估算,不要再加"(估算)"。

  • 6. 按附录B模板写出完整 analysis JSON。 tier_stats 的 green/yellow/red 必须是可解析的 GB 数字开头(如"约 27.8 GB")。

附录B:analysis JSON 模板(照此结构写)

{
  "generated_at": "2026-06-03 17:00:00",
  "scan_seconds": 9.3,
  "system": {  /* 从 scan.json 的 system 字段直接复制 */ },
  "top5": [
    {"rank": 1, "tier": "red", "size": "约 7.6 GB", "type": "应用程序文件",
     "name": "MobileAppEngine", "path": "C:\Program Files\MobileAppEngine",
     "note": "华为手机助手模拟器,EmulatorSdk 占 7.4 GB"}
  ],
  "green": [
    {
      "name": "WorkBuddy 桌面端更新缓存",
      "path": "C:\Users\xxx\AppData\Local\@genieworkbuddy-desktop-updater",
      "size_estimate": "约 450 MB",
      "kill_processes": [],
      "trash_paths": ["C:\Users\xxx\AppData\Local\@genieworkbuddy-desktop-updater"],
      "commands": [
        {"label": "PowerShell 移入回收站",
         "cmd": "Remove-Item -Path "$env:LOCALAPPDATA\@genieworkbuddy-desktop-updater" -Recurse -Force"}
      ]
    }
  ],
  "yellow": [
    {
      "name": "WPS 双版本插件/模板",
      "path": "C:\Users\xxx\AppData\Roaming\kingsoft",
      "size": "约 4.4 GB",
      "content_profile": "WPS 中文版+国际版数据。wps/addons 2.2GB,wps_international/addons 1.9GB。",
      "why_manual": "涉及两个版本的共用数据,无法自动判断主要用哪版。",
      "disposal": "只用中文版:wps_international/addons 1.9GB 可安全删除。",
      "risk": "删除 wps_international 后国际版 WPS 启动时会重新下载插件。",
      "trash_paths": ["C:\Users\xxx\AppData\Roaming\kingsoft\wps_international"]
    }
  ],
  "red": [
    {
      "name": "MobileAppEngine(华为手机助手)",
      "path": "C:\Program Files\MobileAppEngine",
      "size": "约 7.6 GB",
      "why_keep": "7.4GB 为 EmulatorSdk Android 模拟器镜像。如果不用华为手机连电脑可卸载。",
      "indirect_release": "设置→应用→已安装的应用→搜索 MobileAppEngine→卸载。释放约 7.6GB。",
      "app_paths": ["C:\Program Files\MobileAppEngine"],
      "auto_reclaim": "否,需手动卸载"
    }
  ],
  "denied": [],
  "summary": {
    "overview": "C 盘仅剩 4.3GB,最大占用是华为手机助手 7.6GB + WPS 数据 4.4GB。可立刻释放约 1.8GB。",
    "tier_stats": {"green": "约 1.8 GB", "yellow": "约 15.0 GB", "red": "约 12.4 GB"},
    "priority": [
      "最优先:清除更新缓存 5 项约 1.8GB,零风险",
      "其次:清理 WPS 国际版插件 1.9GB"
    ],
    "long_term": [
      "启用存储感知:设置→系统→存储→存储感知→开",
      "定期 DISM:DISM /Online /Cleanup-Image /StartComponentCleanup",
      "大文件迁移至 D 盘:D 盘还有 218GB 可用"
    ]
  }
}

注意事项:

  • system 字段直接复制 scan.json 的 system,不要改动结构。
  • trash_paths 必须是真实存在的绝对路径数组,不能为空数组。
  • 🟡 项的 trash_paths 只放核实过安全可移的子路径(如旧备份目录),不是整个 path。
  • 🟡 项如果没有安全子路径,trash_paths 留空或不写。
  • commands[].cmd 写完整的可执行命令,用户可以直接复制到 PowerShell。

依赖

  • Python 3.10+ (纯标准库,零 pip install)
  • Windows 10 / 11(Windows 7 未测试)

平台状态

  • Windows 10/11:完整实现并实测(扫描/报告/一键删除全验证)。
  • 新增覆盖原版盲区:Installer、ProgramData、回收站、WinSxS、Windows Temp。

与原版 storage-analyzer 的差异

维度 原版 Windows 版
平台 macOS + Windows Windows only
扫描目标 7 组 (Win) 12 组 + dev_caches
macOS 代码 ~150 行 0 行
盲区 ~65 GB 已覆盖
--quick 模式 无 有
--cache 缓存 无 有
健康检查 无 GET /health
长路径处理 无 \? 前缀
回收站查询 无 Windows API
hiberfil/pagefile 未检测 已检测

长期建议(写入报告 long_term)

  • Windows 自带:cleanmgr(磁盘清理)、存储感知(设置→系统→存储)
  • DISM 清理:DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase
  • 第三方工具:WizTree(免费)、SpaceSniffer(免费)、TreeSize
  • 大文件迁移至 D/E 盘;休眠关闭:powercfg /hibernate off
  • 聊天软件缓存:微信/企微/钉钉定期在 App 内清理

更新日志

v2.0 — Windows-Native 重构 (2026-06-03)

基于原版 storage-analyzer (KKKKhazix/khazix-skills) 的完整逆向分析创建纯 Windows 实现。

修改动机:

  • 原版 307 行 scan.py 中 ~150 行是 macOS-only 逻辑,Windows 用户无需携带
  • 原版扫描盲区 ~65GB:Installer(31.5G) / ProgramData(4.7G) / 回收站(3.6G) / WinSxS(11.6G)
  • 3 个 Windows 特有 bug:stdout 缓冲、SHFileOperationW 长路径、后台服务无存活检测

改动清单:

类型 项目 优势
新增 5 个系统级扫描目标(Installer/ProgramData/回收站/WinSxS/Windows Temp) 扫描覆盖率从 ~35% 提升到 ~90%
新增 --quick 模式(0.2s 一级扫描 + 大文件自动聚合) 首轮反馈从 14s 降到 0.2s,用户零等待
新增 --cache 24h 缓存 + COMPUTERNAME 自动识别 二次扫描 <0.1s,消除重复扫描
新增 GET /health 健康检查 + 启动自检 服务存活可感知,启动失败立刻报错
新增 --min-mb 自定义阈值参数 大文件优先,用户可控粒度
新增 hiberfil.sys / pagefile.sys 系统文件检测 休眠/虚拟内存占用可见,不再遗漏
删减 砍掉全部 macOS 代码(~150 行) 代码量 -50%,Windows 专精,维护成本降低
修改 Frontmatter 四段式结构化(做什么/何时用/触发词/反触发) Agent 触发准确率提升,误触发减少
修改 Step 3 6 条可勾选检查清单 + ⏸️ 确认门 防止 Agent 跳过用户审查,分级结果必须用户同意
修改 9 场景异常处理表 边界条件全覆盖(Python 未安装/空扫描/磁盘满/权限拒绝等)
修改 11 种标签体系(含优先级链 + 互斥规则 + 正反例) 分类准确率提升,名称去歧义(应用本体→应用程序文件)
修改 附录 B 内联有效 JSON 模板(替代原版伪 JSON schema) Agent 零推理写分析 JSON,照抄结构即可
优化 Quick 模式 46 项→7 项(文件级自动聚合) 用户一屏看完,不再被 40 个 .msp 淹没
优化 约束规则一章合并(铁律+确认门+异常处理) 认知负荷 -60%,规则一次读完
优化 Agent/Script 职责对照表 一眼知谁负责哪个阶段
修复 os.path.isfile() → os.path.exists()(pagefile 检测) 系统文件不再漏检
修复 COMPUTERNAME → socket.gethostname() fallback 缓存文件名不再显示 "unknown"
修复 行缓冲 → sys.stdout.reconfigure(line_buffering=True) 后台启动输出即时可见
修复 \? 长路径前缀 + FOF_NOERRORUI 260 字符路径不丢失,错误弹窗抑制

原版 vs Windows 版性能:

指标 原版 Windows 版
Quick 扫描 — 0.2s
全量扫描 14.2s 9.3s
二次扫描(缓存命中) 14.2s <0.1s
扫描覆盖率 ~35% ~90%
Quick 模式 Top 条目 (无此模式) 7 项(聚合后)
macOS 代码 150 行 0 行

v2.1 — HTML 空白页修复 (2026-06-05)

修复报告 HTML 在浏览器中显示空白的致命问题。根因:JSON 数据注入 HTML 时,3 个崩溃点会导致整个 注入 JSON 中路径含 字符串 浏览器提前关闭 → ,u2028 → u2028,u2029 → u2029,彻底消除 JS 解析崩溃 build_report.py 新增 _warnings 注入数据 将结构验证警告传入模板,页面也能显示诊断提示 report_template.html 修复 amber→yellow / green_items→green 兼容 Agent 写 amber 不再导致数据丢失 report_template.html 修复 逐项字段补全 green/yellow/red 每一项缺失的字段自动填安全默认值(如 content_profile → "暂无内容画像"),不再显示 undefined 或空白 report_template.html 新增 mount 函数结构诊断 检测 green/yellow/red 全空、缺少 size_estimate、缺少 content_profile 等问题,页面顶部显示警告横幅 report_template.html 新增 build_report 警告透传 _warnings 数组中的验证警告也会在页面中显示 report_template.html 修复 catch 块增加调试信息 JS 解析失败时不再空白,显示错误详情和原始数据片段 server.py 修复 三重安全转义(同 build_report.py) 服务模式下也不会因 / u2028 崩溃 server.py 修复 amber→yellow 兼容 load() 函数自动将 amber 键重命名为 yellow

测试验证:

测试场景 结果
标准 JSON(完全匹配附录B模板) ✅ 正常渲染
不完美 JSON(amber 代替 yellow + red 缺必填字段) ✅ 有警告横幅但正常渲染,数据不丢失
极端最小 JSON(只有 system 字段,无 green/yellow/red) ✅ 优雅降级,页面显示警告而非空白
含 u2028/u2029 的 JSON ✅ 正确转义为 u2028/u2029,不再触发 JS 语法错误

v2.2 — 一键清理绿色项(确认面板 + 串行删除 + 进度反馈) (2026-06-05)

在交互式网页中增加"一键清理"功能:确认面板让用户勾选要清理的绿色项,确认后逐项串行删除并实时显示进度,失败项跳过继续,最后显示结果摘要。

交互流程:

点击"一键清理全部 N 项 (约 X GB)" → 弹出确认面板
  → 面板列出所有绿色项(复选框 + 名称 + 路径 + 大小)
  → 用户勾选/取消 → 点击"确认移到废纸篓"或"直接删除"
    → 逐项串行调用 /action API
      → 每完成一项:更新进度条 + 状态标记(✓/✗)
      → 某项失败?跳过继续,记录错误
    → 全部完成:显示结果摘要(成功 N 项 / 失败 M 项 + 失败原因)
  → 用户点"关闭"

改动清单:

文件 类型 项目 说明
report_template.html 新增 确认面板 UI(modal) 半透明遮罩 + 居中弹窗 + 复选框列表 + 全选/取消全选
report_template.html 新增 openBatchModal() 收集可清理绿色项,构建确认面板列表
report_template.html 新增 executeBatchClean(mode) async 串行逐项删除,实时更新进度条 + 状态标记
report_template.html 新增 进度条 + 结果摘要 进度条动画 + 成功(绿)/部分成功(黄)/失败(红) 三色结果面板
report_template.html 改进 绿色区醒目大按钮 原 btn-sm 改为 btn-lg,显示"🗑 一键清理全部 N 项 (约 X GB)"
report_template.html 新增 逐项状态 CSS batch-cleaning(清理中)、batch-ok(✓)、batch-fail(✗) 三种卡片状态
report_template.html 新增 点击遮罩关闭面板 点击 modal 外部遮罩区域自动关闭
report_template.html 改进 "直接删除"选项默认隐藏 需手动勾选"显示直接删除选项"才出现,防止误操作
report_template.html 新增 静态模式提示 静态报告模式下点一键清理,提示用户使用 server.py 启动服务模式

关键设计决策:

  1. 串行而非并行删除:避免并发请求导致文件锁冲突或服务端过载
  2. 失败跳过而非中止:某项权限不足时跳过继续,最后汇总失败列表
  3. 默认只显示"移到废纸篓":安全可逆;"直接删除"需额外勾选才可见
  4. 确认面板可取消勾选:用户可以精确选择要清理哪些项,而非全有或全无

v2.2.1 — 修复 SHFileOperationW 类型错误 (2026-06-05)

修复"一键清理"全部失败的 bug。根因:_to_wide_null_terminated() 返回 bytes(encode("utf-16-le")),但 SHFILEOPSTRUCTW.pFrom 声明为 wintypes.LPCWSTR,ctypes 期望 str 而非 bytes,导致每次移到废纸篓都报错 unicode string or integer address expected instead of bytes instance。

修复:

  • _to_wide_null_terminated() 返回 str 而非 bytes
  • 注释同步更新:说明 ctypes 会自动将 Python str 转为 UTF-16
  • 移除冗余的 import ctypes 语句(该函数不再需要 ctypes)
  • move_to_trash() 增加错误码 120/124 回退逻辑:系统保护目录(如 C:WindowsSoftwareDistributionDownload)或含被占用文件的目录无法移到回收站时,自动回退到 hard_delete(),避免清理失败
  • ALLOWED_ROOTS 新增 C:Program Files 和 C:Program Files (x86):修复 🔴 项"在资源管理器打开"时 L7 root boundary 拦截(如 C:Program FilesAutodesk)
  • report_template.html 修复 onclick 属性中 Windows 路径反斜杠丢失:esc(p).replace(/'/g,"\'") 增加 .replace(/\/g,'\\'),防止 JS 字符串中 P 被当作无效转义序列吞掉反斜杠(如 C:ProgramDataAutodesk 变成 C:ProgramDataAutodesk)

v2.3 — 设计级修复:JSON 解析方式 + 服务进程分离 (2026-06-05)

修复交互式网页始终显示为"静态模式"(DELETE = null)的根因问题,涉及两个独立 bug。

Bug 1:内联 JSON 赋值导致 JS 解析崩溃

因素 旧设计 新设计
数据注入方式 DATA = {json};(直接赋值) 转义
build_report.py 简化 转义逻辑 同上
SKILL.md 更新 Step 4 改用 Start-Process 启动 + 默认浏览器打开
目录

热门AI工具

更多
Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
Windows查看电脑主板信息合集
Windows查看电脑主板信息合集

本专题整合了Windows查看电脑主板信息相关内容,阅读专题下面的文章了解更多详细内容。

144

2026.03.25

Windows命令提示符
Windows命令提示符

本专题整合了Windows命令提示符相关操作教程,阅读专题下面的文章找到解决方法。

194

2026.03.24

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

686

2026.01.15

Windows快速搭建Java开发环境
Windows快速搭建Java开发环境

本专题整合了Windows中快速搭建Java开发环境教程,阅读专题下面的文章了解更多详细内容。

441

2025.10.24

windows更新被禁用怎么打开
windows更新被禁用怎么打开

开启被禁用的 Windows 更新:方法一:服务管理器中将其设置为自动启动并启动服务;方法二:Windows 设置中取消暂停更新;方法三:使用命令提示符启动 wuauserv 和 cryptSvc 服务并重启计算机。想了解更多相关内容,请阅读专题下面的文章。

3642

2025.03.27

windows副本不是正版怎么解决
windows副本不是正版怎么解决

此windows副本不是正版的解决办法:1、执行重新激活;2、使用命令提示符;3、调整服务设置;4、使用激活工具;5、更新系统。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1479

2024.08.23

windows打印机不打印的原因
windows打印机不打印的原因

windows打印机无法打印可能是由连接、驱动程序、打印机设置、文档、墨水耗尽、纸张或硬件故障引起的。想了解更多windows的相关内容,可以阅读本专题下面的文章。

3374

2024.04.15

windows驱动精灵作用
windows驱动精灵作用

Windows驱动精灵是一个免费的驱动程序管理工具,可帮助您轻松查找、下载和安装丢失或过时的驱动程序。想了解更多驱动精灵的相关内容,可以阅读本专题下面的文章。

2978

2024.04.15

linux与windows有哪些主要区别
linux与windows有哪些主要区别

linux和windows的主要区别有:1. 内核:linux使用开源内核,而windows使用专有内核;2. 许可证和成本:linux大多免费开源,而windows需要购买许可证等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

6389

2024.04.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Conan 2 安装指南
Conan 2 安装指南

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn