中英文泡椒 发表于 2026-8-19 16:00:28

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

本帖最后由 中英文泡椒 于 2026-8-19 16:04 编辑

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



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

计算机并不“聪明”!

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

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

去“翻译”。

为了让计算机不搞混,有些字符就被有了“特权”,成为了控制命令。因此,你就不被允许在文件名里再用它们。

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

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

指引路径的 \ 和 /

这两个斜杠,在计算机里技术上叫路径分隔符,在编程的时候我们经常会用到。给你一个文件“2026/05/25 报告.docx”,

计算机默认是在 2026 文件夹下寻找 05 文件夹,然后再找到 .docx 这个文件。

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

磁盘的钥匙 :、

英文冒号:在 Windows 系统里,是专门用来标记盘符的。比如、C:代表C盘,D:代表D盘。

因此,如果你的文件名叫 我的:秘密.txt,计算机一读到冒号,就会以为你想去一个叫“我的”的磁盘,结果自然是找不到,因

为 Windows 压根不允许你用中文磁盘名,你看到的什么 D 盘是软件盘,只是取得别名罢了。



通配符 * 和 ?

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

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

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

rm *.jpg

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

列出来,让你无所适从。

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

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

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

其实熟悉 Linux 的对这些符号都不陌生。因为它们代表动作,如果文件名里带了它们,系统在执行命令时就会误以为要传

输数据,从而引发安全问题。

为什么不与时俱进呢?

**** Hidden Message *****

sunshine_8205 发表于 2026-8-19 18:58:18

{:5_108:}

小甲鱼 发表于 2026-8-20 02:41:30

学到了!
页: [1]
查看完整版本: 为什么文件名不能有“\ / : * ? " < > |”?