由于硬盘空间不足,系统盘120G,用了好多年,装来卸去了不少软件,残留垃圾不少,所以想清理下,考虑直接重置下系统,然后再把 win11 升级到 25H2 版,最后做个备份。5月中旬就折腾一下,这算是挺顺利的了。
5月底,突然心血来潮,想问下 DeepSeek,做个垃圾清理的批处理,要求适用于 win11 系统,要确保不误删,要自动获取管理员权限。DeepSeek 经过一段时间的深度思考后,生成了一个批处理,我就一键复制保存到桌面,命名为“CleanTemp.bat”,然后直接运行测试了。
运行批处理后,整个D盘都被清空了,只剩下中文目录,以及带空格的目录(如:Program Files),其它文件全部被清理,只剩下空的文件夹,D盘空间是200G,主要放软件,原本快满飘红了,剩余空间就不到20G,现在变成剩余空间有180G多,其中 nZone 文件夹原本至少100G,现只剩下4G多,4万多的文件夹,文件却只有1万多,真是悲催!

文件被误删,比较大的问题是录制的音频全部被清理了,接近6G,然后几乎所有软件要重装,有的绿色软件年代久远,可能就找不到了,浏览器脚本得重新做,好在有个工作脚本文件在别的分区,很多文件要重新整理。
为避免有人错误运行,确认选择的方式就多了好几个Y,用分享链接的方式查看更清楚,我不黑 DeepSeek,但它的确出问题了。
@echo off
title Windows 11 安全垃圾清理工具
color 0A
:: 检查管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
echo 正在请求管理员权限...
powershell -Command "Start-Process '%~f0' -Verb RunAs"
exit /b
)
cd /d %~dp0
:: 显示欢迎信息
echo ========================================
echo Windows 11 安全垃圾清理工具
echo ========================================
echo.
echo 此工具将安全清理以下位置的临时文件:
echo [1] 当前用户临时目录 ^(%%TEMP%%^)
echo [2] 系统临时目录 ^(%%SystemRoot%%\Temp^)
echo.
echo 注意:不会清理回收站、浏览器缓存等个人数据,
echo 确保不会误删重要文件(实测会误删)
echo.
:: 用户确认
set /p confirm="确认要开始清理吗?(Y/N): "
if /i not "%confirm%"=="YYYYYYYYYYYY" (
echo 已取消清理操作。
pause
exit /b
)
echo.
echo 正在清理临时文件,请稍候...
:: 清理当前用户临时文件夹
if defined TEMP (
if exist "%TEMP%\*" (
echo 正在清理 %TEMP%
call :CleanDir "%TEMP%"
)
)
:: 清理系统临时文件夹
if defined SystemRoot (
set "SysTemp=%SystemRoot%\Temp"
if exist "%SysTemp%\*" (
echo 正在清理 %SysTemp%
call :CleanDir "%SysTemp%"
)
)
echo.
echo 清理完成!所有临时文件已安全移除。
echo 按任意键退出...
pause >nul
exit /b
:CleanDir
:: 安全清空指定目录(保留目录本身,仅删除内部所有文件和子文件夹)
set "dirPath=%~1"
if not exist "%dirPath%\" goto :eof
pushd "%dirPath%" || goto :eof
:: 删除所有文件(包括只读、隐藏文件)
del /f /s /q "%dirPath%\*" >nul 2>&1
:: 删除所有子目录
for /d %%d in ("%dirPath%\*") do (
rd /s /q "%%d" 2>nul
)
popd
goto :eof
DeepSeek:https://chat.deepseek.com/share/u3ln3atdoylj2imyhx

由于是 Win11 环境下的固态硬盘,尝试恢复丢失的文件,只能恢复到大小一致的文件,但基本都打不开,用16进制编辑器查看,里面都是0,能恢复的是极个别的文本文档,但没什么用,有的文件可以看之前的文件夹名重建了,而孤本文件就只能永久丢失了。

豆包:https://www.doubao.com/thread/xd4d57fe2b63e8a6fb05d8a463f9294ec
回头看这代码是哪里出问题,几乎问了所有AI,都说没啥问题,我说运行后所在的D盘被删了,DeepSeek 还没有找到 bug 问题所在,只是说变量的问题,不过也有 AI 反推排查出问题来,具体就不一个个分享了,放一些截图吧。


豆包的表述不够严谨,ChatGPT 不够细节,Claude 表达最清晰,一段话准确完整的表述就是:
cd /d %~dp0 将当前驱动器锁定为D盘。随后由于延迟展开未启用,SysTemp 变量在 if 块内被赋值后立即读取拿到空字符串,空字符串传入清理函数后空路径没有任何防御,导致 * 被解析为D盘根目录,最终删除了D盘所有文件和目录。中文及含空格的目录因路径解析失败而幸存。
事故完整还原如下:
原代码 cd /d %~dp0
→ 当前驱动器锁定为 D:
延迟展开未启用
→ if块内 %SysTemp% 读到空字符串
→ call :CleanDir ""
:CleanDir 收到空参数
→ if not exist "\" → D:\ 存在 → 不跳过
→ pushd "" → 停在 D:\Data\Desktop,返回0
→ del /f /s /q "\*" → D盘所有文件删除
→ for /d in ("\*") → rd D盘所有子目录
→ 纯ASCII目录:成功删除
→ 含空格/中文目录:rd执行出错,静默跳过,幸存
元凶:代码未启用延迟展开,导致 %SysTemp% 在 if 块内赋值后立即读取拿到空字符串,这是100%必然触发的语法错误,与权限和系统版本无关。
帮凶:cd /d %~dp0 将当前驱动器锁定为D盘,使空路径的 * 指向D盘根目录。
两者叠加,导致D盘被递归清空。
不知道笔者这是个例还是也有其他人遇到,不要太相信 AI 了,不确定的要多验证一下。这次被 DeepSeek 坑惨了,被删盘后,感觉都有阴影了,以后不要随意运行 AI 生成的脚本,真的是要慎之又慎。



