为什么文件名不能有“\ / : * ? " < > |”?

不知道大家在新建文件或者给文件重命名的时候,有没有遇到过这样的问题?

当你正准备给文件起个霸气的名字,顺手敲进去了几个标点符号,结果系统突然弹出一个无情的提示:

236e500586279fc540171a317d881509.png

这时候大家可能会想:计算机干什么吃的?怎么连这几个平平无奇的符号都容不下?为什么偏偏是 “\ / : * ? " < > |” 这 9 个?

这篇,我们就来看看,这几个被禁用符号背后,藏着什么秘密!

计算机并不“聪明”!

我们先要明白一个前提:计算机很笨,它没有人类那样的理解能力

例如:

  • “2026/05/25 报告.docx”里的斜杠 /,人类知道是代表日期。
  • 但对计算机来说,它看到这样一串字符时,必须用一套严格的规矩去“翻译”。

为了让计算机不搞混,有些字符就被有了“特权”,成为了控制命令

因此,你就不被允许在文件名里再用它们。

为什么偏偏是这 9 个符号?

我们可以把这 9 个特权符号分为四大类,分别说说他们都为什么成为特权阶级。

指引路径的 \ 和 /

这两个斜杠,在计算机里技术上叫路径分隔符,在编程的时候我们经常会用到。

不用我多解释,给你一个文件“2026/05/25 报告.docx”,计算机默认是在 2025 文件夹下寻找 05 文件夹,然后再找到 .docx 这个文件。

再例如 D:\照片\猫.png,这里的反斜杠(或者斜杠)就像是路标,告诉计算机:“进了D盘,再进照片文件夹,最后找到猫”。

磁盘的钥匙 :

英文冒号 : 在 Windows 系统里,是专门用来标记盘符的。

比如 C: 代表C盘,D: 代表D盘。

因此,如果你的文件名叫 我的:秘密.txt,计算机一读到冒号,就会以为你想去一个叫“我的”的磁盘,结果自然是找不到,因为 Windows 压根不允许你用中文磁盘名,你看到的什么 D 盘是软件盘,只是取得别名罢了。

52dcd30d2c3d6a5509e9ee0e1c92f4fb.png

通配符 * 和 ?

之前我们讲过正则表达式:Python学习笔记——从入门到报废(三十、正则表达式)

这俩在正则表达式里扮演着重要作用:

  • * 用于匹配任意一串字符;
  • ? 用于匹配任意一个字符。

举个例子,用过 Linux 的同学知道,当删除目录下的所有 .jpg 文件时,可以用指令:

rm *.jpg

这里 * 就用于匹配所有 JPG 的文件名。因此,如果你把某个文件命名成了 *.doc,哪天你在搜索框一搜,就会把所有文件列出来,让你无所适从。

早期系统的数据传输 <> 和 |

这 3 个符号在早期 DOS 系统或命令行中(Win + R,输入 cmd 打开那个),是用于进行数据传输的:

  • < 和 > 叫重定向符号,用来把数据传输到目标位置;
  • | 叫管道符号,用来把前一个命令的结果传给下一个命令。

其实熟悉 Linux 的对这些符号都不陌生。

因为它们代表动作,如果文件名里带了它们,系统在执行命令时就会误以为要传输数据,从而引发安全问题。

为什么不与时俱进呢?

想太多了!

全世界那么多的软件、服务器、网站,都是按照几十年前的标准在运行,就像你可能听过的某些银行还在用退休的编程语言维护服务器一样。如果仅仅是为了小范围的方便而修改标准,那么换来的要么就是你无法与世界通信,要么就是全世界范围的大换血。



  • 声明:本站内容均来自互联网,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
  • 本文地址:https://www.wivu.cn/article/ckj/94.html
开车来消息,回还是不回?让 iPhone自动帮你回,不用碰手
不管什么车,只要车上有这4个配置就是好车