← [ BACK_TO_NOTES ]

专题归档 · 2026 年 9 月(编辑分组,非实际写作日期)

Windows 项目里出现删不掉的 nul 文件:一次删除实验

跨平台脚本留下保留设备名文件时,为什么普通删除命令不行,以及原始复现中各工具的不同表现。

文件明明在磁盘上,删除命令却说不行

我的 Windows 项目目录里曾经出现过一个真正叫 nul 的文件。按普通文件处理时会产生反直觉的结果:资源管理器可以看到它,但在当前目录执行 del nul 却失败。

原因不是一定缺少管理员权限。Windows 兼容 DOS 的保留设备名,NUL 首先可能被按设备解释,而不是按目录里的实体文件解释;而 Bash 等环境里写错重定向目标,也可能意外留下同名文件。

实际记录了哪些不同结果

那次复现的记录中,普通 del nul 报路径语法问题;改用 扩展路径前缀 + 绝对路径 后成功删除。.NET 的文件 API 也有成功案例,而 PowerShell Remove-Item -LiteralPath 在当时环境里虽然返回成功,文件却还存在。

最后一种现象不能直接推导为“所有版本的 Remove-Item 都有这个 bug”。更可靠的做法是在执行删除后再次列目录核对实际文件是否消失。

比删除命令更值得留下的教训

遇到跨平台脚本产生的古怪文件名时,先弄清运行命令的 Shell、Win32 路径解析和磁盘真实目录项是不是同一件事。把 CMD 命令直接粘贴进 Git Bash,不一定得到同样行为。

这篇只写实验观察,具体完整命令和设备名机制继续放在 Windows 保留设备名知识笔记,避免重复维护一篇长教程。

创建于 2026/9/27 更新于 2026/10/16
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本