Windows 系统中的奇怪 Bug 和历史遗留问题
🪟 Windows 系统中的奇怪 Bug 和历史遗留问题
Windows 自上世纪 80 年代起发展至今,积累了大量兼容性、历史包袱与奇怪设计。本篇介绍一些有趣或让开发者头大的 Windows Bug。
1. CON, PRN, AUX 等保留文件名 Bug
💥 问题描述
在 Windows 中,无法创建名为 CON.txt、PRN.doc、AUX.jpg 等文件,无论是否添加扩展名。
📜 原因
这些名字来源于 MS-DOS,代表系统设备:
| 设备名 | 含义 |
|---|---|
| CON | 控制台设备 |
| PRN | 打印机设备 |
| AUX | 辅助串口设备 |
| NUL | 空设备 |
虽然现在很少人用打印机串口,但这些保留名一直留存至今,无法被用作文件名。
🧪 复现
echo hello > CON.txt
# 报错:文件名无效
2. Excel 的 1900 年是闰年 Bug
🐛 问题描述
Excel 默认的日期系统中,错误地认为 1900 年是闰年,因此包含一个本不应该存在的 2 月 29 日。
📜 原因
为了兼容早期 Lotus 1-2-3 软件的 Bug,微软故意保留了这个错误。
"It's not a bug, it's a feature for compatibility."
📅 正确的规则
- 世纪年(如 1900)如果不能被 400 整除,不是闰年。
- 1900 是平年,2月没有29日。
3. 文件路径最大长度限制(260 字符)
🧱 问题描述
默认情况下,Windows 的最大路径长度为 260 个字符,包括盘符、路径、文件名和 NULL 结尾符。
📜 原因
该限制来自早期 Windows API 的 MAX_PATH 常量定义。
💡 解决方案
- 在 Windows 10+ 中可以通过注册表启用 长路径支持;
- 使用
\\?\前缀可绕过路径限制:
\\?\C:\very\long\path\file.txt
4. 删除不了的 Thumbs.db
📷 问题描述
资源管理器预览图片时会生成一个隐藏文件 Thumbs.db,记录缩略图缓存。删除文件夹时,若该文件未释放,会导致“无法删除”提示。
🛠️ 解决方案
- 禁用缩略图缓存(组策略或资源管理器设置)
- 使用命令强制删除:
del /f /a Thumbs.db /s
5. 文件名大小写不敏感但保留大小写
🔤 问题描述
Windows 文件系统默认 不区分大小写(case-insensitive),但又 保留用户输入的大小写(case-preserving)。
> echo 123 > Hello.txt
> echo 456 > hello.txt
# 第二条命令不会创建新文件,而是覆盖原文件
🤯 问题影响
- Git 在处理文件重命名时容易出错;
- 复制跨平台文件夹可能出现重复文件名问题。
6. 路径带空格导致批处理出错
🧨 问题描述
如果批处理脚本中路径不加引号,而路径中包含空格,如:
cd C:\Program Files\My App
系统会尝试访问 C:\Program,导致执行失败。
✅ 正确写法
cd "C:\Program Files\My App"
7. “设备已准备就绪”却读不到 USB 设备
🔌 问题描述
插入 U 盘后系统提示设备已就绪,但打开时显示驱动器为空或读取失败。
🔎 可能原因
- 驱动器分配错误;
- 分区表损坏;
- 磁盘初始化失败但系统误报成功。
🛠️ 解决方法
- 用磁盘管理工具重新分配盘符;
- 使用
diskpart清理并重建分区。
8. 任务计划程序延迟触发/不触发
🕑 问题描述
某些计划任务在唤醒电脑后未按时执行,或只在手动执行时生效。
🔍 原因
- 没有勾选“唤醒计算机运行任务”;
- 电源选项中阻止唤醒;
- 权限不足。
9. 文件复制进度卡在 99%
📂 问题描述
复制大型文件时,进度条长时间卡在 99%,看起来像是“复制失败”。
📜 原因
- 数据已经写入缓存,但尚未刷新到磁盘(flush)
- 尤其在大文件或外接硬盘时更明显
🔚 总结
| Bug 名称 | 原因简述 |
|---|---|
CON 等保留文件名 |
MS-DOS 遗留设备名 |
| Excel 1900 年闰年 Bug | 兼容 Lotus 1-2-3 |
| 路径长度限制 | MAX_PATH 限制 |
Thumbs.db 无法删除 |
缩略图缓存被占用 |
| 大小写保留但不区分大小写 | 文件系统默认行为 |
| 批处理路径空格出错 | 未加引号 |
| USB 显示正常但无法读取 | 分区/盘符错误 |
| 计划任务延迟触发 | 电源策略/权限问题 |
| 复制卡住 | 缓存刷新未完成 |
感谢分享
感谢分享
我在鱼排学知识
已阅
好
第一个试了一下,真的耶
棒!
奇怪的知识又增加了