Windows 在尝试删除时似乎对文件名有长度限制,但它不会阻止创建这些文件。
我们的构建过程会创建许多违反此限制的临时文件(许多是基于 WSDL 构建的)。我们的 ant 脚本在执行清理时能够以某种方式删除它们,但有时我需要删除 workarea 目录(所有临时文件所在的位置)而不实际从 ant 中进行完全清理。
这是这个问题的相同错误,但那里的答案对我来说并不真正有用,因为我正在处理一个目录,而不是一个文件,而且我并不总是知道是什么特定的文件或子目录导致了问题。而且我试图避免任何手动过程(除了触发单个命令)来实际删除它们。
如果我尝试从资源管理器中删除目录,我会收到错误
Cannot delete [file name]: The file name you specified is not valid or too long.
Specify a different file name
Run Code Online (Sandbox Code Playgroud)
Remove-Item在powershell中尝试会出现以下错误:
Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
At line:1 char:12
+ Remove-Item <<<< -force -Recurse <directory>
Run Code Online (Sandbox Code Playgroud)
有没有人知道任何工具或简单的方法来解决这个删除错误,而不必手动找到问题文件并移动/重命名它们?
我正在使用我发现的一些计算机视觉源代码,但没有意识到它创建了一个名称很长的缓存文件,现在我无法删除其中的 2 个。
我尝试将其重命名为较短的名称,但我无法对该文件执行任何操作,我还尝试重新启动计算机并查看它是否会消失。
错误消息说:
目标路径太长。
目标文件夹的文件名太长。您可以缩短文件名并重试,或尝试路径较短的位置。

在这种情况下如何删除文件?
我正在运行一个出错的节点脚本并创建了一个文件夹结构,如下所示:
\myfolder
\myfolder
\file.txt
\myfolder
\file.txt
\myfolder
\file.txt
\etc.
Run Code Online (Sandbox Code Playgroud)
这嵌套了 300 多次,我估计,如果不是更多的话。
我不能这样del做,因为它的文件路径太长。
我无法使用,robocopy因为它实际上在这一点附近冻结:
我无法使用,FileAssassin因为它显然仅用于文件。
我已尝试使用此答案中的 .bat 脚本如何删除嵌套很深的文件夹并避免“文件名太长”?,并且它仍在运行,但我担心在递归级别,即使每个子文件夹都被重命名为一个字符,它仍然会超过 260(或任何限制)。
如何problem从我的文件系统中删除它?
编辑
DeepRemove 成功!胜利!3,421 级递归。天啊!从现在开始,我会更加小心使用 nodejs(或任何对文件系统的编程修改),尤其是。当涉及递归时!
Windows Server 2012 R2 Standard中也会出现与Windows 10中类似的问题。启用NTFS 长路径策略既不在也不在(参见屏幕截图)。此选项适用于Windows Server 2012 R2 Standard吗?Local Computer Policy > Computer Configuration > Administrative Templates > System > Filesystem... > Filesystem > NTFS
我需要此选项来恢复仍然存在的子文件夹中名称太长的已删除文件。将此子文件夹移动到另一个位置(即较短的路径)并不能解决问题,因为已删除的文件将无法从该新位置恢复。
如何删除太长的名称和类似线程的答案是没有选项,因为不幸的是我能够删除这些文件,但是我无法恢复它们。