省流版
让Claude Code用rm命令删就行,提示词如下:
用bash的rm命令删掉"C:\Users\1\Desktop\for_test\nul"(nul文件的具体路径)
如果Claude返回的第一个命令无法成功删除文件,就需要多做一步:手动改文件权限:Everyone → 完全控制。



原理
为什么删不掉?
nul 是Windows保留设备名。
Windows把一些名字保留给系统设备:
- nul - 空设备
- con - 控制台
- prn - 打印机
正常情况下创建不了这些名字的文件。但bash命令有时会绕过检查,硬生生创建出来。
Windows自带的删除工具看到这个名字就懵了,所以右键删除、del命令都没用。
为什么rm能删?
rm命令会用 \\?\ 前缀访问文件:
\\?\C:\Users\1\Desktop\for_test\nul
这个前缀告诉Windows:"别检查保留名,直接操作这个路径"。
为什么有时要改权限?

异常文件创建时权限经常有问题。Everyone只有读取/写入,没有删除权限。
rm能绕过保留名,但绕不过权限。所以要先给Everyone加上"完全控制":

这文件怎么来的?
用AI写代码涉及bash命令时,有些代码会往 /dev/null 写东西。
Linux/Mac有这个设备,Windows没有。某些情况下Windows就会创建一个叫 nul 的实体文件。
不是bug,是跨平台差异。
总结:
- 删不掉的nul → Claude Code + rm命令
- 删不动 → 先改权限Everyone完全控制
- 原理:rm用\\?\前缀绕过保留名检查
前阵子写了个个人博客,公众号文章也会在我的博客上同步更新。
大概下周更新个人网站构建经过。
感兴趣的话,关注一下不迷路。