Windows文件命名须避开9个禁用字符(\ / : * ? " |)、260字符路径限制、CON等系统保留名、首尾空格及结尾句点,并注意大小写不敏感与Unicode兼容性要求。

如果您在Windows系统中创建文件或文件夹时遇到命名失败、无法保存、提示“名称无效”或文件异常不可见等问题,则很可能是违反了系统底层的文件名取名规则。以下是符合Windows内核与NTFS文件系统要求的命名规范及明确禁忌项:
一、禁止使用的字符
Windows将特定字符保留用于路径解析、命令行操作或设备通信,因此这些字符在任何位置(开头、中间、结尾)均不可出现在文件名或文件夹名中。使用即触发系统拒绝创建或重命名操作。
1、禁用字符共9个:\ / : * ? " |
2、这些字符的Unicode等价形式(如全角冒号:、全角问号?、零宽空格等)同样被系统识别为非法,不可使用。
3、即使字符被URL编码(如%3A)、Base64编码或嵌入不可见控制符,NTFS驱动层仍会拦截并拒绝写入。
二、长度限制与路径约束
Windows API默认采用MAX_PATH=260字节限制,该限制作用于完整路径(含盘符、各级文件夹、文件名及扩展名),而单个文件名(不含路径)最大允许255个UTF-16码元。超出将导致CreateFile、MoveFile等系统调用失败。
1、纯文件名(含扩展名)不得超过255个字符;中文字符按UTF-16计为1字符/汉字,故最多约127个汉字加1个ASCII字符。
2、完整路径(如C:\a\b\c\filename.txt)总长度不能超过260字符,否则资源管理器、CMD、PowerShell多数命令将报错“路径不存在”或“参数错误”。
3、若启用长路径支持(通过组策略或应用程序清单声明longPathAware),NTFS本身支持最长32767字符路径,但大量旧程序、备份工具、杀毒软件仍不兼容,不建议依赖。
三、系统保留名称禁用规则
这些名称源自DOS时代硬件设备映射,Windows内核在对象管理器中永久注册为设备节点。任何层级的文件或文件夹若命名为以下名称(不区分大小写、不加扩展名亦生效),均会被系统拦截并拒绝创建。
1、核心设备名:CON、PRN、AUX、NUL
2、串口与并口名:COM1 至 COM9、LPT1 至 LPT9
3、命名时即使添加扩展名(如CON.txt、prn.dat)或前后加空格(如" CON "),系统仍按保留名处理,操作将失败。
四、空格与标点符号的特殊处理
Windows允许在文件名中间使用空格和英文句点(.),但首尾空格和结尾句点具有特殊语义,系统会主动截断或拒绝,以避免路径解析歧义和类型识别冲突。
1、文件名开头或结尾不得为空格(包括全角空格、不间断空格U+00A0);输入后系统自动去除,实际保存名无首尾空格。
2、文件名不能以英文句点(.)结尾(如“report.”、“data.”);此类名称会被视为无扩展名的隐藏系统文件,资源管理器不显示,且CreateFile返回INVALID_HANDLE_VALUE。
3、文件名中间可含多个句点(如“v2.1.0.release.zip”),仅最后一个句点后内容被识别为扩展名,但句点本身不构成违规。
五、大小写与Unicode兼容性要求
NTFS文件系统底层存储文件名时保留原始大小写,但所有API查询(FindFirstFile、GetFileAttributes等)均执行不区分大小写的匹配。Unicode支持完备,但需满足编码有效性与显示安全性。
1、File.txt 与 file.txt 视为同一文件,后者覆盖前者;重命名时若仅改变大小写,系统不触发实际写操作。
2、允许使用中文、日文、韩文、阿拉伯文、西里尔字母等Unicode字符,但必须为合法UTF-16序列,禁止U+FFFE、U+FFFF等非字符码位。
3、表情符号(Emoji)、变体选择符(VS1–VS16)、组合字符(如带音标的拉丁字母)虽技术上可写入,但部分Shell扩展、网络共享协议(SMB1)、旧版备份工具可能无法正确传输或渲染,不建议在生产环境文件名中使用。











