Questão Como deletar um arquivo com um caminho muito longo para ser deletado [duplicado]


Esta questão já tem uma resposta aqui:

Eu estava trabalhando com algum código-fonte de visão de computador que encontrei e não percebi que ele cria um arquivo de cache que tem um nome MUITO LONGO e agora não posso excluir os 2 deles.

Eu tentei mudar o nome para um nome mais curto, mas não posso fazer nada para o arquivo, também tentei reiniciar o computador e ver se ele iria embora.

A mensagem de erro diz:

Caminho de Destino Muito Longo.

O nome do arquivo seria muito longo para o   pasta de destino. Você pode diminuir o nome do arquivo e tentar novamente ou tentar   local que tem um caminho mais curto.

screenshot

Como posso excluir os arquivos neste caso?


192


origem


Funcionaria a partir da linha de comando com o del comando? Algo ao longo das linhas de del *.cache deve excluir todos os arquivos .cache no diretório atual. - Ryan
"Caminho \ para \ pasta \ CACHEI ~ O sistema não pôde encontrar o arquivo especificado" disse que duas vezes e há 2 arquivos lá, mas não fez nada - Chris
Pensando bem, você pode verificar uma das outras perguntas que já foram respondidas. Este por exemplo. - Ryan
Se esses dois arquivos forem os únicos que restam no diretório, talvez seja melhor excluir o diretório inteiro. No prompt de comando, tente rd /s directoryname  Isso vai acabar directoryname e todos os arquivos / subdiretórios dentro dele, então use-o com cautela :) - bitsmack
youtube.com/watch?v=qQTyTprFAOg - bhv


Respostas:


Supondo que você esteja no Windows:

O que eu sempre faço é usar subst para criar uma asccociação driveletter com parte do caminho.

Então vá para o novo driveletter e navegue até os arquivos que possuem nomes longos. Agora você deve ser capaz de renomear / excluir / etc deles. A razão pela qual isso funciona é porque o próprio caminho não contém mais> 255 caracteres.

Para criar uma pasta subst

  1. Iniciar um prompt de comando (sem privilégios de administrador necessários)
  2. Usar cd para navegar até a pasta que você deseja ir (você pode usar aba para autocompletar nomes
  3. tipo subst j: . para criar a associação de driveletter. (em vez do. você também pode digitar o caminho inteiro)
  4. Agora no explorador você tem uma nova carta. Vá até ele e faça o que for necessário para os arquivos .cache.
  5. Volte para a janela do cmd e digite subst /d j: para remover a unidade ou, alternativamente, reinicie o seu PC.

EDIT: Um truque que aprendi que pode encurtar isso um pouco. Na janela do explorador em que você tem problemas, clique na barra de endereços para poder digitá-la e digitar cmd e pressione Entrar para iniciar um prompt de comando nesse local e, em seguida, continue na etapa 3. :)

EDIT2: OK, esse truque pode ser expandido ainda mais. Se você está no explorador no caminho certo, basta digitar subst j: . na barra de endereços e pressione enter. Uma janela de comando irá aparecer, executar o comando e fechar novamente, e lá você vai, uma nova unidade aparece no explorador.


341



robocopy empty_dir base_nested_dir / purge - Basta criar um diretório vazio e dizer ao robocopy para limpar tudo no diretório de destino que não esteja no diretório vazio stackoverflow.com/a/3320317/588759 - rofrol
Apenas tentei isso e eu não pude remover o arquivo em questão .. Eu uso o cygwin com windows, uma solução alternativa é remover o arquivo dessa forma: rm -R / path / in / question enquanto nenhum outro programa estiver usando o arquivo Você está pronto para ir - John
Eu tive um problema onde o SUBST não reconheceu J: como um 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
@rofrol, você deve tornar sua resposta de robocopy uma resposta: é muito mais fácil do que fazer a abordagem de nomes de diretório ao lidar com muitos diretórios filhos (como aqueles criados em node_modules) - Andy Brown
A solução de John funcionou muito bem para mim, apenas adicionei o -f (parâmetro de força): rm -R -f / pathToDelete - Christophe Keller


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 próprio arquivo, você pode simplesmente renomear as pastas para tornar o caminho 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.
  • Excluir usando o nome abreviado.

ou seja, se o arquivo tiver o nome "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á limitada pelo limite mais curto.


64



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


Pesquisou: excluir nome de arquivo longo Primeiro resultado

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

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

Unlocker pode ajudar! Basta clicar com o botão direito na pasta ou no arquivo e selecionar   Destravador. Se a pasta ou arquivo estiver bloqueado, uma lista de janela de armários   vai aparecer. Basta clicar em Desbloquear tudo e pronto!


4



Eu vi isso, mas não sabia se o unblocker era seguro de usar, então ignorei, vou testá-lo. EDIT: não funcionou. ele funciona em outros arquivos, mas o unblocker não aparece no menu suspenso - Chris
Certamente a maneira mais simples de fazer isso, embora possa precisar de uma reinicialização para ser concluída. Nada de errado com o Unlocker - ele vem sendo usado há anos e é um utilitário muito útil. No caso de um arquivo ou pasta cujo caminho seja muito longo, ele não encontrará nenhum identificador de bloqueio, mas deverá oferecer a opção Excluir no menu suspenso depois. - Steve Pettifer
Trabalhei perfeitamente - o engraçado é que eu tenho esse software instalado, mas não me ocorreu para usá-lo nessa situação. - Daniel Sokolowski
Não funcionou para outra pasta onde copiei uma pasta de junção circular, mas o que funcionou foi renomear cada pasta de nível para um caractere como 1 todo o caminho e, em seguida, excluí-lo. - Daniel Sokolowski
Esta foi a única resposta que funcionou para mim (estou usando o windows 10). Muito obrigado! - user26832


Microsoft tem um artigo base de conhecimento útil sobre a exclusão de arquivos undeletable. Causa # 4 é de relevância para você.

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


2



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 facilmente excluir a pasta e conteúdo. O mesmo princípio que as soluções de console mostradas acima, mas essa é uma solução de GUI rápida que foi mais fácil para mim. - RandomHandle