A remoção de uma pasta recursiva que não é recursiva no Windows falha com “Source Path Too Long”

1

Eu pareço ter conseguido uma pasta de Dados de Aplicação para se auto-recriar de alguma forma, não parece recursiva, mas de alguma forma ainda é e agora não consigo remover essa pasta. A pasta em si é meramente uma subpasta em uma pasta de backup de um pc antigo. Não é mais usado de forma alguma.

O nome da pasta atual é

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

(renomei Documents and Settings para toremove)

A seguir tentei

  • Excluir no explorador.

  • rmdir/s/q.
  • %código%.Issoinformaumchkdsk
  • Windowsmaynotdetectallcyclesonyourvolumebecausethedirectorystructureistoodeep.paraespelharumapastavazianarecursiva.Esterobocopycaiucomumestourodepilha:robocopy
  • RenomeieSTACK_OVERFLOW_c00000fd_Robocopy.exe!RoboPrunerecursivamenteparaApplicationDataparadiminuirotamanhodocaminho.Issoparacomamensagemdequeonomecompletodevetermenosde260caracteres

    $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 
    }
    
  • Baixe t e tente remover a pasta.

  • TeraCopy na estrutura de pastas para furter encurtar o caminho usando o script Powershell. Depois da unidade subst , desisti.
  • K: de sysinterals mas isso não encontra pontos de nova análise.
  • junction -s está listando atualmente 330 Dir (s)
  • dir /s c:\DWI00672\toremove\brhi\AppData\Local para listar os pontos de nova análise está retornando arquivo não encontrado
  • dir /al /s c:\DWI00672\toremove\brhi\AppData\Local do Cygwin executado como usuário atual, administrador e como sistema (psexec -s -i cmd) . O todo retorna rm -f -d c:\DWI00672\toremove\brhi\AppData\Local . O proprietário da pasta Local é meu usuário atual.
por Lieven Keersmaekers 25.01.2017 / 12:07

1 resposta

2

Infelizmente, não posso comentar.

Mas, você poderia tentar usar o robocopy para espelhar um diretório vazio para C: \ DWI00672 e, em seguida, remover o diretório.

Então:

  1. mkdir C: \ empty
  2. robocopy C: \ vazio C: \ DWI00672 / PURGE
  3. rmdir C: \ empty
  4. rmdir C: \ DWI00672

O Robocopy não usa as mesmas chamadas de sistema que têm o limite de 248 caracteres. Mas pode ter um limite de caracteres superior que não conheço.

Eu apenas tentei no meu sistema, funcionou muito bem (isso tinha uma estrutura de pastas de cerca de 400 caracteres).

    
por 25.01.2017 / 22:32