Como excluir um arquivo com um caminho muito longo para ser excluído [duplicado]

203

Eu estava trabalhando com algum código-fonte de visão computacional que encontrei e não percebi que ele cria um arquivo de cache com um nome MUITO LONGO e agora não consigo excluir os dois.

Tentei renomeá-lo para um nome mais curto, mas não consigo fazer nada com o arquivo, também tentei reiniciar o computador e ver se ele desapareceria.

A mensagem de erro diz:

Caminho de destino muito longo.

Os nomes dos arquivos seriam muito longos para a pasta de destino. Você pode diminuir o nome do arquivo e tentar novamente ou tentar um local que possua um caminho mais curto.

captura de tela

Como posso excluir os arquivos neste caso?

Chris
fonte
Funcionaria a partir da linha de comando com o delcomando? Algo nesse sentido del *.cachedeve excluir todos os arquivos .cache no diretório atual.
Ryan
"Path \ a \ pasta \ CACHEI ~ O sistema não pôde encontrar o arquivo especificado", disse que duas vezes e há 2 arquivos lá, mas não fiz nada
Chris
Pensando bem, você pode verificar uma das outras perguntas que já foram respondidas. Este por exemplo.
21719 Ryan
1
Se esses dois arquivos forem os únicos restantes no diretório, você poderá ter melhor sorte ao excluir o diretório inteiro. No prompt de comando, tente rd /s directoryname Isso vai acabar com directorynamee todos os arquivos / subdiretórios dentro dele, para usá-lo com cuidado :)
bitsmack

Respostas:

353

Supondo que você esteja no Windows:

O que eu sempre faço é usar subst para criar uma associação de letra de unidade com parte do caminho.

Em seguida, vá para a nova letra da unidade e navegue até os arquivos que têm nomes longos. Agora você deve poder renomear / excluir / etc. A razão pela qual isso funciona é porque o caminho em si não contém mais> 255 caracteres.

Para criar uma pasta subst

  1. Iniciar um prompt de comando (não são necessários privilégios de administrador)
  2. Use cdpara navegar até a pasta que você deseja acessar (você pode usar tabpara preencher automaticamente os nomes
  3. digite subst j: .para criar a associação do driveletter. (em vez do. você também pode digitar o caminho inteiro)
  4. Agora no Explorer, você tem uma nova letra de unidade neste PC . Vá para ele e faça o que for necessário nos arquivos .cache.
  5. Volte para a janela do cmd e digite subst /d j:para remover a unidade ou, como alternativa, reinicie o seu PC.

EDIT: Um truque que aprendi que pode encurtar um pouco isso. Na janela do Explorer, onde você tem problemas, clique na barra de endereços para digitá-la, digite cmde pressione Enterpara iniciar um prompt de comando nesse local e prossiga na etapa 3. :)

EDIT2: Ok, esse truque pode ser expandido ainda mais. Se você estiver no Explorer no caminho certo, basta digitar na subst j: .barra de endereço e pressionar Enter. Uma janela de comando será exibida, execute o comando e fechará novamente; e lá vai, uma nova unidade é exibida no explorer.

LPChip
fonte
26
robocopy empty_dir base_nested_dir / purga - Basta criar um diretório vazio, e dizer robocopy para limpar tudo no diretório de destino que não está no diretório vazio stackoverflow.com/a/3320317/588759
rofrol
7
Apenas tentei isso e não consegui remover o arquivo em questão .. Eu uso o cygwin com o Windows, uma solução alternativa é remover o arquivo dessa maneira: rm -R / path / in / question, desde que nenhum outro programa esteja usando o arquivo você é bom para ir
John
1
Eu tive um problema em que o SUBST não reconheceu J: como parâmetro (ele também não viu nenhuma unidade virtual disponível), então a opção cygwin mencionada por John funcionou bem.
Tisch
1
@rofrol, você deve fazer o seu comentário robocopy uma resposta: é muito mais fácil do que fazer o diretório nomes aproximar quando se lida com lotes de diretórios filho (como aqueles criados em node_modules)
Andy Brown
1
A solução da John funcionou muito bem para mim, acabou de adicionar o (parâmetro force) -f: rm -R -f / pathToDelete
Christophe Keller
67

Sua pergunta pergunta como excluir um arquivo quando o próprio nome do arquivo é muito longo. Se o caminho for muito longo e não apenas o nome do arquivo, você pode facilmente renomear as pastas para torná-lo mais curto.

Mas para excluir um arquivo cujo nome tenha mais de 255 caracteres:

  • Abra um prompt de comando executando "CMD.EXE"
  • Navegue até a pasta que contém o arquivo
  • Use o comando DIR / X, que exibirá os nomes abreviados dos arquivos.
  • Exclua usando o nome abreviado.

ou seja, se o arquivo for chamado "verylongfilename.fil", o nome abreviado será exibido como algo como "verylo ~ 1.fil" e você poderá excluir usando esse nome.

Observe que, embora o próprio Windows possa manipular caminhos com mais de 255 caracteres, a maior parte da GUI - como o Windows Explorer - está vinculada ao limite mais curto.

Debra
fonte
16
Esta é uma resposta melhor do que a aceita.
Ben
3
A resposta escolhida é melhor porque você pode excluir pastas inteiras com esse método
Mcont
2
mas no Windows 7 parece que DIR / x não muda qualquer exibição em tudo aqui ... :(
gumuruh
3
Alguns sistemas de arquivos NTFS NÃO possuem equivalentes 8.3. Portanto, isso nem sempre funciona mais.
Ross Presser
Del / S de CMD trabalhou para mim mesmo com grande nome no 8.
Jeff
4

Googled: delete filename longo Primeiro resultado

Use o Unlocker http://www.filehippo.com/download_unlocker/

Não é possível excluir a pasta: Ele está sendo usado por outra pessoa ou programa. Não é possível excluir o arquivo: Acesso negado. Houve uma violação de compartilhamento. O arquivo de origem ou destino pode estar em uso. O arquivo está em uso por outro programa ou usuário. Verifique se o disco não está cheio ou protegido contra gravação e se o arquivo não está em uso no momento.

Unlocker pode ajudar! Simplesmente clique com o botão direito na pasta ou arquivo e selecione Desbloqueador. Se a pasta ou arquivo estiver bloqueado, será exibida uma lista de armários na janela. Basta clicar em Desbloquear tudo e pronto!

Wutnaut
fonte
1
Eu vi isso, mas não sabia se o desbloqueador era seguro, então eu o ignorei, vou tentar. EDIT: não funcionou. ele funciona em outros arquivos, mas unblocker não aparece no menu suspenso
Chris
Certamente, a maneira mais simples de fazer isso, embora possa precisar de uma reinicialização para concluir. Nada de errado com o Unlocker - use-o há anos e é um utilitário muito útil. No caso de um arquivo ou pasta cujo caminho é muito longo, ele não encontrará uma alça de bloqueio, mas deverá oferecer a opção Excluir no menu suspenso posteriormente.
9788 Steve Jobs -
1
Funcionou perfeitamente - o engraçado é que eu tenho esse software instalado, mas não me ocorreu usá-lo nessa situação.
Daniel Sokolowski
Não funcionou para outra pasta na qual copiei uma pasta de junção circular, mas o que funcionou foi renomear cada pasta de nível para um caractere como 1todo e excluí-la.
Daniel Sokolowski
Esta foi a única resposta que funcionou para mim (estou usando o Windows 10). Muito obrigado!
user26832
4

A Microsoft possui um artigo útil da base de conhecimento sobre a exclusão de arquivos não excluídos . A causa 4 é relevante para você.

Sua melhor aposta provavelmente seria mapear uma unidade para a pasta em que o arquivo está (resolução nº 3), entrar nela e excluí-la.

Compro01
fonte
1
Eu nunca percebi antes que eu poderia "mapear a unidade de rede" para um local no meu próprio disco rígido. Foi o que fiz no Windows Explorer. Depois de navegar para a unidade, eu poderia excluir facilmente a pasta e o conteúdo. Mesmo princípio que as soluções de console mostradas acima, mas esta é uma solução rápida de GUI que foi mais fácil para mim.
RandomHandle