五种方法可解决:一、powershell用-literalpath强制删除;二、逐级剪切至根目录缩短路径后删除;三、启用longpathsenabled后用cmd加\?前缀删除;四、robocopy镜像清空目标再删空文件夹;五、wsl中用linux命令rm -rf直接删除。

如果您在 Windows 10 系统中尝试删除某个文件或文件夹,却反复提示“文件名过长”“源路径太长无法访问”或“指定的文件名无效”,则说明该文件的完整路径(含盘符、所有中间文件夹及文件名)已超出系统默认的 260 字符限制(MAX_PATH),导致资源管理器、常规命令及多数图形化操作均无法解析或定位目标。以下是五种可立即执行的彻底清理方法:
一、使用 PowerShell -LiteralPath 参数强制删除
PowerShell 的 -LiteralPath 参数可完全跳过路径字符串的通配符解析与长度校验环节,直接按字面值匹配目标路径;配合 -Force 可无视只读、隐藏、系统属性及多数 ACL 拒绝策略,实现精准强制清除。
1、右键“开始”按钮,选择“Windows Terminal(管理员)”或“Windows PowerShell(管理员)”。
2、输入命令:Remove-Item -LiteralPath "C:\your\very\long\path\to\file.txt" -Force,将引号内路径替换为实际的绝对路径(必须包含盘符,反斜杠需双写或统一使用正斜杠)。
3、按 Enter 执行。若路径含方括号 [ ]、花括号 { } 或星号 * 等字符,-LiteralPath 是唯一可靠方式。
二、逐级剪切至根目录缩短路径后删除
该方法不依赖任何系统设置或第三方工具,利用资源管理器对浅层路径的原生兼容性,通过物理上移文件位置,使总路径长度回落至 260 字符以内,从而恢复常规右键删除、Shift+Delete 等全部操作能力。
1、在文件资源管理器中打开该文件所在最深层文件夹。
2、选中目标文件或整个文件夹,按 Ctrl+X 剪切。
3、在地址栏连续按 Backspace 返回上级目录,每返回一级后立即按 Ctrl+V 粘贴一次,直至粘贴成功(通常到达 C: 或 D: 根目录即可)。
4、在根目录下右键该文件,选择“删除”或直接按 Shift+Delete 永久删除。
三、启用 LongPathsEnabled 后使用 CMD 删除
启用 LongPathsEnabled 后,Windows 内核允许 cmd.exe、PowerShell 及资源管理器原生处理最长约 32,767 字符的扩展路径(以 \? 开头),从根本上解除 260 字符硬限制。
1、按 Win+R 输入 gpedit.msc 打开本地组策略编辑器(仅专业版/企业版可用)。
2、导航至:计算机配置 → 管理模板 → 系统 → 文件系统 → 启用 Win32 长路径,设置为“已启用”,点击“确定”。
3、家庭版用户请按 Win+R 输入 regedit,定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,双击修改 LongPathsEnabled 的数值数据为 1。
4、重启电脑,在命令提示符(管理员)中执行:del /f /q "\?\C:\your\very\long\path\file.txt"。
四、使用 RoboCopy 清空目标再删除空文件夹
RoboCopy 是 Windows 内置的高鲁棒性复制工具,其 /mir 参数可镜像一个空文件夹到目标路径,等效于清空目标目录内容且不受路径长度限制;清空后原文件夹即变为空,可被常规方式删除。
1、新建一个临时空文件夹,例如 C:\EmptyFolder。
2、以管理员身份运行命令提示符,执行:robocopy C:\EmptyFolder "C:\your\very\long\folder\path" /mir /e。
3、等待命令完成(输出显示“0 文件已复制”即表示清空成功)。
4、此时原文件夹已为空,可在资源管理器中直接右键删除该空文件夹。
五、通过 WSL 使用 Linux 命令直接操作 NTFS
Windows Subsystem for Linux(WSL)绕过 Windows API 路径解析层,直接在内核态访问 NTFS 卷,对路径长度无感知;Linux 命令如 rm -rf 可无条件递归删除任意深度的目标。
1、确保已安装 WSL(如 Ubuntu),并在 Microsoft Store 中更新至最新版本。
2、在 PowerShell 中输入 wsl 进入 Linux 环境。
3、挂载 Windows 分区并进入目标路径,例如:cd /mnt/c/your/very/long/path。
4、执行强制删除:rm -rf "file_or_folder_name"。











