找回密码
 立即注册
搜索
查看: 2099|回复: 18

[软件] win的文件名长度是根据系统来的?和磁盘格式无关?

[复制链接]
     
发表于 2022-7-13 11:33 | 显示全部楼层 |阅读模式
最近备份点文件数据
发现一个很蛋疼的问题
输出PC为:win10,ntfs,64位
输入PC为:win7,ntfs,64位

然后导入过程中会报一个错,“文件名长度超过系统限制”
但实际上我看了下单独把文件拷贝过去没问题,有问题的是放在N个层级的文件夹下面就会报这个错
估计是数据库里面是“/文件夹A/文件夹B/...../文件XXXX”这样来记录的?
这问题有啥办法解决么...
回复

使用道具 举报

     
发表于 2022-7-13 11:34 | 显示全部楼层
减少文件层级
回复

使用道具 举报

     
发表于 2022-7-13 11:36 | 显示全部楼层
长文件路径支持确实是Win10才引入的。。。

要不把数据拷贝过去的时候直接拷贝到磁盘根目录上?这样前面"文件夹A/文件夹B/"之类的会短一些
回复

使用道具 举报

     
发表于 2022-7-13 11:36 来自手机 | 显示全部楼层
是资源管理器限制,可以试试看用7z压缩然后copy过去再解压

----发送自 OPPO PCLM10,Android 11
回复

使用道具 举报

     
 楼主| 发表于 2022-7-13 11:36 | 显示全部楼层

这样操作容易的话我也就不问了
回复

使用道具 举报

     
 楼主| 发表于 2022-7-13 11:37 | 显示全部楼层
fmonion 发表于 2022-7-13 11:36
长文件路径支持确实是Win10才引入的。。。

要不把数据拷贝过去的时候直接拷贝到磁盘根目录上?这样前面"文 ...

就是丢根目录了,那看起来无解了...
回复

使用道具 举报

     
发表于 2022-7-13 11:42 | 显示全部楼层
robocopy fastcopy
回复

使用道具 举报

     
发表于 2022-7-13 11:47 | 显示全部楼层
本帖最后由 RJG丶one 于 2022-7-13 11:50 编辑

解除windows max_path限制呗

我记得python安装时有这个选项,脱离python怎么操作我搜了一下没搜出来,有一些操作注册表的看了下不建议动…
在 Python 中禁用路径长度限制 | D栈 - Delft Stack
装一遍,完成安装时有这个界面,点一下解除限制,然后把python卸了试试。
另外我还搜到MSDN的客服回复,说是系统限制如此,没法改,免责声明说全了,怕出问题的话记得备份。
回复

使用道具 举报

发表于 2022-7-13 12:02 | 显示全部楼层
https://www.howtogeek.com/266621 ... ver-260-characters/
注册表在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem下建立新DWORD值LongPathsEnabled,设值为1
回复

使用道具 举报

     
发表于 2022-7-13 12:04 | 显示全部楼层
第三方explorer 或者用winrar浏览也可以
回复

使用道具 举报

     
发表于 2022-7-13 12:05 | 显示全部楼层
这来源于一个历史问题.

比较老的系统(<= win10 1607)内Win32 文件和目录函数中最多支持260长度路径.
这会导致比如你复制一个超长的路径,它只能复制前 260 个字符,或者保存到错误的路径.
哪怕是新式系统中,如果涉及到DOS或者老的win32文件函数仍然会出现问题.
虽然NTFS 文件系统支持最多 32k 字符长度路径.

对于新系统可以手工解除路径长度限制,方法如下(均需要重新启动电脑):
1 调整组策略 计算机配置 > 管理模板 > 系统 > 文件系统 > 启用 Win32长路径 ->启用

2 修改注册表  \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
新增加dword32 项
key名称: LongPathsEnabled
数值: 1

评分

参与人数 1战斗力 +1 收起 理由
chilno + 1

查看全部评分

回复

使用道具 举报

     
发表于 2022-7-13 12:30 | 显示全部楼层
都有关系,系统有限制,文件系统也有限制
除了Win10 1607及以后可以使用LongPathsEnabled之外,还有一个\\?\的方法
如果程序写得比较好,可以用\\?\D:\very long path的方式来访问

资源管理器似乎一直都只支持最长路径为260个字符
回复

使用道具 举报

     
发表于 2022-7-13 14:19 | 显示全部楼层
本帖最后由 hein 于 2022-7-13 14:30 编辑

用7楼的软件拷贝

win10 1607,之前还可以查一下fsutil 8dot3name query C:
如果磁盘开启了8dot3name(win10之前都是默认开启的),可以直接使用转换后的8dot3name的短文件名打开或者复制拷贝文件,保证你不会出现260字符问题(就像一个别名一样)

参考这个:https://jingyan.baidu.com/article/642c9d34d7778f254b46f723.html

比如我这个
2022/07/13  14:26    <DIR>                       ..
2020/03/03  18:18     6,235,990,268 FIX_故~1.TS  Fix[故宫].The.Forbidden.City.HDTV.1080i.MPEG2.AC3.E06.ts
               1 个文件  6,235,990,268 字节
               2 个目录 300,007,862,272 可用字节

用下面两个路径都可以复制或者打开这个视频
D:\Downloads\Fix[故宫].The.Forbidden.City.HDTV.1080i.MPEG2.AC3.E06.ts
D:\DOWNLO~1\FIX_故~1.TS

需要注意的是,8dot3name如果没有开启,开启后,原本的文件是不会拥有8dot3name短文件名的,必须重新在开启8dot3name的磁盘上重新复制一遍。

评分

参与人数 1战斗力 +1 收起 理由
chilno + 1

查看全部评分

回复

使用道具 举报

发表于 2022-7-13 16:51 | 显示全部楼层
hein 发表于 2022-7-13 14:19
用7楼的软件拷贝

win10 1607,之前还可以查一下fsutil 8dot3name query C:

8.3名是兼容win9x软件的一个功能吧。32位系统用16位软件访问关了8.3名的文件会是什么情况?
回复

使用道具 举报

     
发表于 2022-7-13 20:53 | 显示全部楼层
写了个vbs,把文件或者文件夹拖上去就能看到是不是有短路径了,就是这个vbs不清楚支不支持unicode,可以试试看。

Get8dot3ShrotName.zip

622 Bytes, 下载次数: 0

回复

使用道具 举报

     
发表于 2022-7-13 21:38 来自手机 | 显示全部楼层
用fastcopy,多长都能给你复制过去
回复

使用道具 举报

     
发表于 2022-7-14 15:21 来自手机 | 显示全部楼层
fat用8位长度下标的数组来存储文件名,所以文件名最大长度为255。
一些应用层和过滤层的程序会偷懒搞一刀切,不论是不是fat,一律限制文件操作的最大路径文件名长度为255,所以这算是一个历史遗留问题。
回复

使用道具 举报

     
发表于 2022-7-14 15:22 | 显示全部楼层
win10某个大版本之后才支持长文件名
搜索 LongPathsEnabled
回复

使用道具 举报

     
发表于 2022-7-14 16:56 来自手机 | 显示全部楼层
我记得是完全文件位置+名称才是真正支持的文件的名字长度   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-22 15:25 , Processed in 0.087502 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表