删除 Windows 中非递归的递归文件夹失败,并显示“源路径太长”

删除 Windows 中非递归的递归文件夹失败,并显示“源路径太长”

我似乎已经设法得到了一个应用数据文件夹以某种方式递归到自身,但不会递归的,但不知何故仍然是,现在我发现自己无法删除该文件夹。该文件夹本身只是旧电脑备份文件夹中的子文件夹。它不再以任何方式使用。

当前文件夹名称为

C:\DWI00672\toremove\brhi\AppData\local

(我将 Documents and Settings 重命名为 toremove)

我已经尝试过了

  • 在资源管理器中删除。

    在此处输入图片描述

  • rmdir /s /q .
  • chkdsk. 这报告了一个Windows may not detect all cycles on your volume because the directory structure is too deep.
  • robocopy将空文件夹镜像到递归文件夹中。这会导致 robocopy 崩溃并出现堆栈溢出:STACK_OVERFLOW_c00000fd_Robocopy.exe!RoboPrune
  • 递归Application Data重命名以t缩短路径长度。此过程会停止,并显示“完全限定名称必须少于 260 个字符”的消息

    $current = gci "C:\DWI00672\toremove\brhi\AppData\local" -Force 
    while ($true) {
      $current.FullName
      if ($current.BaseName -ne "t") {Rename-Item -Path $current.FullName t -ErrorAction Inquire -Force }
      $current = gci "$($current.Parent.FullName)\t" -Force -ErrorAction Inquire 
    }
    
  • 下载TeraCopy并尝试删除文件夹。

  • subst进入文件夹结构,使用 Powershell 脚本进一步缩短路径。 驱动之后K:,我放弃了。在此处输入图片描述
  • junction -s来自 sysinterals,但没有找到重新解析点。 在此处输入图片描述
  • dir /s c:\DWI00672\toremove\brhi\AppData\Local目前有 330 个目录
  • dir /al /s c:\DWI00672\toremove\brhi\AppData\Local列出重新解析点返回文件未找到
  • rm -f -d c:\DWI00672\toremove\brhi\AppData\Local从 Cygwin 以当前用户、管理员和系统用户身份执行(psexec -s -i 命令)。全部返回rm: cannot unlink 'local': Not owner。本地文件夹的所有者是我当前的用户。

答案1

不幸的是,我无法发表评论。

但是,您可以尝试使用 robocopy 将空目录镜像到 C:\DWI00672,然后删除该目录。

所以:

  1. mkdir C:\empty
  2. robocopy C:\empty C:\DWI00672 /PURGE
  3. 删除目录 C:\empty
  4. 删除目录 C:\DWI00672

Robocopy 不使用具有 248 个字符限制的相同系统调用。但它可能有一个我不知道的字符上限。

我刚刚在我的系统上尝试过,它运行得很好(它的文件夹结构大约有 400 个字符)。

相关内容