首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Windows 260字符路径限制可以用subst映射新盘符来缩短,也可以用mklink

Windows 260字符路径限制可以用subst映射新盘符来缩短,也可以用mklink

原创
作者头像
Windows技术交流
修改2024-05-10 12:19:59
修改2024-05-10 12:19:59
1.1K00
代码可运行
举报
文章被收录于专栏:Windows技术交流Windows技术交流
运行总次数:0
代码可运行

复制文件夹遇到了这个提示:文件名对目标文件夹可能太长。你可以缩短文件名并重试,或者尝试路径较短的位置。

创建文件夹遇到这个提示:文件名或扩展名太长。

启用长路径支持可能会影响某些应用程序的兼容性,更建议参考操作系统自己的提示:文件名对目标文件夹可能太长。你可以缩短文件名并重试,或者尝试路径较短的位置。

如果必须突破260字符限制,有注册表方法或subst.exe两种方法:最新版win10/win11默认已经突破,无需操作,server2016/2019/2022/2025则需要LongPathsEnabled注册表项置为1;低版本Server系统则只能用subst.exe命令来缩短路径;subst.exe在20多年前就有了,适用所有windows系统,不论pc还是server。

代码语言:bash
复制
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f

确认到底开没开,这样看:

代码语言:powershell
复制
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled

看结果是不是1,是就是开了,不是就是没开

个人验证上述方案在最新版win10、win11上貌似已经开启了,在所有server系统上则没有开启,不论是server2008R2还是server2025。

启用长路径并重启机器后,在explorer里鼠标操作长路径文件夹仍碰到相关限制的提示

需求描述:启用长路径后,不仅需要命令行能正常使用,还需要图形界面右键创建文件夹

问题原因:微软Windows系统设计就是如此

解决办法:mklink或subst命令

mklink示例:

cmd.exe /c mklink "短路径" “长路径” /D

代码语言:javascript
代码运行次数:0
运行
复制
cmd.exe /c mklink "C:\Users\Administrator\Desktop\test" "C:\1xxx\2xxx\3xxx\4xxx\5xxx\6xxx\7xxx\8xxx\9xxx\10xxx\11xxx\12xxx\13xxx\14xxx\15xxx\16xxx\17xxx\18xxx\19xxx\20xxx\21xxx\22xxx\23xxx\25xxx\26xxx\27xxx\28xxx\29xxx\30xxx\31xxx\32xxx\33xxx\34xxx\35xxx\36xxx\37xxx\38xxx\39xxx\40xxx\41xxx\42xxx\43xxx\44xxx\" /D

如果不挪动原本的较长路径,想原路径变短一些,我一般用这个办法

比如用powershell创建一个长路径

代码语言:powershell
复制
mkdir -force C:\1xxx\2xxx\3xxx\4xxx\5xxx\6xxx\7xxx\8xxx\9xxx\10xxx\11xxx\12xxx\13xxx\14xxx\15xxx\16xxx\17xxx\18xxx\19xxx\20xxx\21xxx\22xxx\23xxx\25xxx\26xxx\27xxx\28xxx\29xxx\30xxx\31xxx\32xxx\33xxx\34xxx\35xxx\36xxx\37xxx\38xxx\39xxx\40xxx\41xxx\42xxx\43xxx\

在最后一层再继续创建文件夹,只能创建1个字符的文件夹了

C:\1xxx\2xxx\3xxx\4xxx\5xxx\6xxx\7xxx\8xxx\9xxx\10xxx\11xxx\12xxx\13xxx\14xxx\15xxx\16xxx\17xxx\18xxx\19xxx\20xxx\21xxx\22xxx\23xxx\25xxx\26xxx\27xxx\28xxx\29xxx\30xxx\31xxx\32xxx\33xxx\34xxx\35xxx\36xxx\37xxx\38xxx\39xxx\40xxx\41xxx\42xxx\43xxx\4\

这个路径明明是248个字符为啥触发260个字符限制呢

因为系统根目录C:实际是%systemdrive%,把C:用%systemdrive%替代后则是

%systemdrive%\1xxx\2xxx\3xxx\4xxx\5xxx\6xxx\7xxx\8xxx\9xxx\10xxx\11xxx\12xxx\13xxx\14xxx\15xxx\16xxx\17xxx\18xxx\19xxx\20xxx\21xxx\22xxx\23xxx\25xxx\26xxx\27xxx\28xxx\29xxx\30xxx\31xxx\32xxx\33xxx\34xxx\35xxx\36xxx\37xxx\38xxx\39xxx\40xxx\41xxx\42xxx\43xxx\4\

这个路径确实是260个字符

想把这个260个字符的长路径变短有个subst.exe命令

cmd命令行:注意结尾不要带\,/D删除映射前注意先cd /d C:切换到其他盘符

代码语言:bash
复制
subst.exe P: "C:\1xxx"
cd /d P:
dir
cd /d C:
subst.exe P: /D


subst.exe Q: "%systemdrive%\1xxx"
cd /d Q:
dir
cd /d C:
subst.exe Q: /D

subst.exe Q: "%systemdrive%\1xxx\2xxx\3xxx\4xxx\5xxx\6xxx\7xxx\8xxx\9xxx\10xxx\11xxx\12xxx\13xxx\14xxx\15xxx\16xxx\17xxx\18xxx\19xxx\20xxx\21xxx\22xxx\23xxx\25xxx\26xxx\27xxx\28xxx\29xxx\30xxx\31xxx\32xxx\33xxx\34xxx\35xxx\36xxx\37xxx\38xxx\39xxx\40xxx\41xxx\42xxx\43xxx"
cd /d Q:
dir
@rem 在Q:\里你可以突破原本限制,如果你不断嵌套缩短路径,260套260可以套好长,但是请注意subst只适合本地磁盘,不适合映射网络挂载盘,虽能映射,但在网络挂载盘有性能问题时,subst会自动多次重试,会一下子拉跨explorer导致整个系统hang
md Q:\
cd /d C:
subst.exe Q: /D
@rem 删掉Q:盘符后,回到最初的路径,你看到了最后新创建的那个文件夹,但是你打不开,当你用subst挂到Q:后,能打开

subst

subst.exe对网络盘有重大弊端,非常不适合挂共享盘比如nfs、smb,对服务器本身的磁盘,则非常适用

https://superuser.com/questions/644684/mapping-drive-letters-to-local-folders/644706#644706

当共享盘稍有unavailable,subst.exe就会疯狂重连,耗死最直接的那个客户端,同时,挂共享盘的所有客户端被牵连,都出现explorer卡顿、甚至僵到白屏的情况,explorer僵的时候,其他程序无响应

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档