You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10超长文件名创建及脚本重命名失败问题求助

问题解答与解决方案

Windows文件系统的长文件名规则

Windows启用LongPathsEnabled后,完整路径(含文件名)最长支持32767字符,并非仅针对路径部分。但NTFS文件系统对单个文件名有独立限制:最多255个UTF-16码元(英文/数字占1个码元,中文等双字节字符占2个码元)。你尝试创建1000字符的文件名,已经远超这个限制,这才是核心问题。

现有操作失败的原因

  • ffmpeg/文件资源管理器:单个文件名超过NTFS的255码元限制,系统直接拒绝创建;另外部分旧版本工具未适配长路径API,即使路径总长度合规也会报错。
  • Node.js脚本:"invalid file name"错误本质是文件名违反了NTFS的单个文件长度限制,或未使用长路径兼容写法。

解决方案

1. 拆分长内容到路径层级

不要把所有长字符堆在文件名里,将部分内容拆分到文件夹名称中。比如把1000charsfilename.txt拆成/folder1/folder2/.../shortname.txt,确保单个文件名不超255 UTF-16码元,同时完整路径不超32767字符。

2. 工具适配长路径(路径总长度合规时)

  • ffmpeg:使用\\?\前缀指定输出路径,强制调用长路径API:
    ffmpeg -i input.mp4 "\\?\C:\your\long\path\output.mp4"
    
    注意:必须保证单个文件名不超255码元限制。
  • Node.js:
    • 可在Node.js v10.12+中设置环境变量启用长路径支持,或直接用\\?\前缀声明长路径:
      const fs = require('fs');
      // 启用长路径支持(Node.js 10.12+)
      process.env.WIN32_LONG_PATHS = '1';
      // 或直接使用\\?\前缀
      const targetPath = '\\\\?\\C:\\your\\long\\path\\filename.txt';
      fs.rename('old.txt', targetPath, err => {
        if (err) throw err;
        console.log('重命名完成');
      });
      

3. 严格遵守NTFS单个文件名限制

如果必须保留长文本,可考虑将内容写入文件内部而非文件名,或使用哈希值缩短文件名,同时用额外的元数据文件记录原长名称。


内容的提问来源于stack exchange,提问作者flopingbird

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 15:22:29