Forçar a exclusão de arquivos com um nome bastante grande

57

Eu uso regularmente o Node.js para gerenciar dependências para programas que escrevo, não é grande coisa. Hoje acabei com uma estrutura de pastas como esta:

Tentar excluir qualquer arquivo foi recebido com este erro:

The source file name(s) are larger than is supported by the file system. Try moving to a location which has a shorter path name, or try renaming to shorter name(s) before attempting this operation.

Já estava em C: \, por isso não ficaria muito mais curto.

    
por Seiyria 18.02.2014 / 02:28

11 respostas

4

Comecei a digitar esse problema enquanto tentava vários comandos, incluindo del /F e rmdir /S (além de manter a mudança durante a exclusão para tentar ignorar a lixeira). Eu acho que rmdir /S realmente apagou todos os arquivos, então eu pude continuar com a exclusão das pastas que eram nós folha, e então progredi até a árvore alguns nós de cada vez. Eventualmente eu limpei todos eles, mas isso era ridículo.

    
por 18.02.2014 / 02:28
73

Use a ferramenta da Microsoft robocopy.exe .

  1. Crie uma nova pasta vazia, por exemplo c:\empty
  2. Em seguida, copie essa pasta vazia para a pasta que contém os nomes de arquivo longos que você está tentando excluir, por exemplo, %código%. Faça isso assim no prompt de comando:

    robocopy / MIR c: \ vazio c: \ myannoyingfolder

por 01.10.2014 / 02:08
26

tudo bem, digamos que você queira excluir uma árvore D:\very\long\path , você não precisa necessariamente usar ferramentas como o Robocopy.

  1. Ir para o diretório raiz da unidade que contém o diretório que você não pode excluir
  2. Crie um diretório com um único nome de letra, por exemplo, D:\a
  3. Navegue até o diretório que você deseja excluir, neste case D:\very\long\path
  4. Selecione todos ( Ctrl + A ) e Recorte ( Ctrl - X )
  5. Navegue até a pasta que você acabou de criar
  6. Colar ( Ctrl - V )
  7. Agora, vá para o diretório raiz e exclua a pasta temp, nesse caso D:\a
  8. Em seguida, volte e exclua o diretório original
por 06.12.2014 / 12:03
4

Você pode integrar essa funcionalidade ao shell do Windows. Meu aprimoramento para a resposta de Flo foi muito longo para um comentário.

Eu adicionei um comando Delete ao menu de contexto do Windows.

Oarquivodelete.regadicionaentradasdoregistroparaassociarpastasaoarquivoemloterobodelete.bat.

delete.reg

WindowsRegistryEditorVersion5.00[HKEY_CLASSES_ROOT\Directory\shell\Delete][HKEY_CLASSES_ROOT\Directory\shell\Delete\command]"Extended"=""
@="\"D:\Documents\robodelete.bat\" \"%1\""

robodelete.bat

mkdir c:\empty
robocopy /MIR c:\empty %1
rmdir %1
rmdir c:\empty

Nota : pode ser necessário alterar os caminhos em ambos os arquivos de acordo com suas preferências.

AVISO : não há como desfazer este comando. Ele não usa a lixeira e não pede que Y / N confirme antes de destruir a pasta definitivamente!

    
por 01.09.2015 / 21:52
4

A ferramenta de linha de comando de código aberto SuperDelete ( GitHub ) funcionou para mim depois que outras opções falharam (Windows 10).

    
por 19.04.2016 / 16:06
3

A melhor maneira de fazer isso é usar o robocopy, eu documentei isso no meu blog pessoal para você seguir:

link

    
por 19.05.2014 / 07:24
0

Em muitos casos, CDing no diretório a partir de um prompt de comando e usando DEL funcionará.

Se não, você deve trabalhar seu nome UP na árvore de diretórios: renomeie a pasta de nível mais baixo para um nome mais curto (por exemplo, "a"), o próximo nome de pasta mais alto e assim por diante, até que o caminho total seja curto o suficiente . Ao trabalhar de baixo para cima, você sempre manipula nomes, que têm um caminho completo mais curto que os arquivos finais.

    
por 18.02.2014 / 02:45
0
  • Abra o prompt de comando administrativo
  • net use z: c:\path
  • del z:\*.*

Ajuste de acordo. Z: é apenas uma letra de unidade arbitrária para mapear o caminho ofensivo para. Esse último comando delete irá apagar o diretório WHOLE que você mapeou - então, seja mais específico, conforme necessário.

    
por 18.02.2014 / 07:04
0

A boa maneira é ter o Linux inicializável no pendrive e excluir arquivos sem problemas do live CD os.

    
por 02.03.2016 / 13:14
-1

Eu também tive o mesmo problema, e eu mesmo o encontrei, basta renomear a pasta pai o menos possível. Ex. Se nossa pasta em " D " for exibida como D: // Folder / Undelete_Folder . Apenas uma coisa que você precisa fazer é renomear o nome da pasta pai como pequeno, u pode renomeá-lo como " a ". então sua localização será D: // a / Undelete_folde r. e exclua a pasta pai.

    
por 25.12.2014 / 14:55
-2

Se tudo mais falhar

Vá para o diretório final na string. Cortar os arquivos O colar de volta para o quarto ou quinto arquivo na String. Então [Shift] + [Delete] deve fazer o truque.

Eu estava cético em executar o prompt de comando elevado acima, pois estava excluindo um arquivo de restauração de teste de um backup do DPM.

espero que isso ajude.

    
por 27.08.2014 / 06:51