Esta pergunta já tem uma resposta aqui:
Minha esposa tem vários arquivos e pastas que, de alguma forma, acabaram tendo nomes de arquivos que os impediram de serem excluídos (não podem ser excluídos) por meios normais ou pela linha de comando. Acredito que os nomes de arquivos sejam muito longos devido à profundidade das estruturas de pastas. Alguém sabe de um bom utilitário para limpar arquivos como este?
CTRL
+DELETE
é o método mais fácil na minha opinião ...Respostas:
Quando você deseja excluir completamente um diretório e ele contém caminhos longos,
robocopy
faz um trabalho MUITO bom:Isso funciona porque a robocopy usa
\\?\
internamente as versões compatíveis com Unicode das funções do Win32, com o prefixo dos caminhos do arquivo ; essas funções têm um limite de 2¹⁶-1 (32.767) caracteres em vez de 259.Pode ser necessário passar por esse processo mais de uma vez para se livrar de todos os arquivos.
fonte
Em um prompt de comando:
Isso listará seus arquivos / pastas em formato de nome abreviado. Em seguida, use o nome abreviado exatamente como está escrito para excluir o arquivo:
fonte
dir
oucd ..
.dir
usar em seupushd
lugar. Isso funcionou para mim.Eu progressivamente trabalho meu caminho no caminho, renomeando cada pasta pai sucessiva para "1" e tentando excluir. Você está efetivamente diminuindo o caminho de cada vez e nunca precisei trabalhar em mais de 4 ou 5 diretórios até finalmente poder excluir toda a estrutura de diretórios (que pode ou não ser o que você deseja). Você também pode fazer isso da última pasta filho e trabalhar para cima ou para baixo.
fonte
mv * 1 && cd 1
. Isso não funcionou quando vários arquivos estavam no diretório, mas nesse pontorm -rf *
geralmente era necessário.Em alguns programas, incluindo o Prompt de Comando (
cmd.exe
), você pode contornar o limite de tamanho do arquivo, prefixando o caminho completo da\\.\
seguinte maneira:fonte
rm -rf \\directoryname
Um truque que usei para contornar a limitação de comprimento "caminho completo e nome do arquivo" para mover, copiar ou excluir algo é encurtá-lo 'invadindo' até a metade (ou mais) usando uma letra de unidade mapeada apontando para uma pasta caminho abaixo .
então você tem c: \ some \ long \ path ... \ e \ foo \ bar \ folders \ oldfiles \ myoldfile.txt.
Em seguida, mapeie uma letra de unidade arbitrária para algum lugar ao longo do caminho, para que o primeiro pedaço do caminho tenha apenas alguns caracteres. Pré-requisito - a pasta deve estar em uma pasta compartilhada (que já pode estar se estiver em um servidor, que é onde eu precisei fazer isso) e, se ainda não estiver, escolha uma pasta em algum lugar no caminho e compartilhe. Dependendo do seu ambiente e nível de paranóia, permita que todos modifiquem o acesso ao compartilhamento, desde que as permissões NTFS sejam razoavelmente restritivas. Se desejar, permita apenas os direitos de modificação em sua própria conta.
Agora vá para a pasta compartilhada ou uma dentro dela e compartilhe-a ou use a linha de comando da seguinte maneira. Suponha que você tenha compartilhado a pasta "foo" como "fooshare", então você pode fazer
e a unidade X: agora aponta diretamente para a pasta "pastas" dentro desse compartilhamento, então "x: \ oldfiles \ myoldfile.txt" agora é bem curto.
(O "/ persistent: no" significa que isso não sobreviverá à próxima reinicialização e o confundirá mais tarde. Não se esqueça de cancelar o compartilhamento de sua pasta quando terminar.)
Lembre-se, você não tem que compartilhar a pasta contendo o arquivo, necessariamente, se ele já está dentro de uma pasta compartilhada você pode simplesmente mapear através da participação e as pastas aninhadas para uma pasta de destino próximo ao arquivo e que funciona bem.
Eu tive que usar essa técnica para fazer uma robocopia massiva entre dois servidores quando percebemos que os usuários haviam mapeado unidades bastante profundas na estrutura da pasta, para que pudessem usar 255 caracteres a partir daí, mas que excederam o comprimento total do caminho do arquivo quando acessado a partir da raiz da unidade local.
fonte
subst x: C:\Some\first\part\of\the\long\path
e depois exclua a unidade comsubst x: /d
subst
truque parece funcionar bem, desde que o nome do arquivo não seja tão longo que o limite de 260 caracteres, mesmo na raiz de uma unidade.net use
, você pode usar as ações de administração padrão:net use x: \\localhost\c$\bar\folders /persistent:no
A maneira mais simples que encontrei é inicializar a partir de um CD ao vivo do ubuntu.
Como alternativa, você pode criar uma pasta compartilhada na metade do caminho e, em seguida, mapear uma unidade de rede para ela e excluir a pasta mapeada (mesmo na mesma máquina)
fonte
Renomeie o diretório de recortar / colar o arquivo em outro lugar e exclua-o. Trabalha aqui.
Ou apenas no prompt de comando, se você não sentir vontade de enfrentar o problema.
fonte
node_modules
pastas super-aninhadas ), arraste-o para a área de trabalho e exclua-o. Enxágue e repita conforme você sobe algumas pastas por vez. Que problema desagradável.Provavelmente não é a melhor maneira e estou interessado em ver o que os outros criam -
Eu tive isso uma vez e tentei algumas coisas sem sorte. Em vez de procurar uma boa ferramenta, reiniciei com o disco do Windows, fui para o console de recuperação e o excluí de lá. Trabalhou pela primeira vez e muito bem!
Além disso, você criou um Google para você e o encontrou - o DelinvFile parece bom, mas não pode atestar isso.
Editar - Aviso, acabei de ver o exposto é apenas um teste - Talvez não seja tão bom quanto eu pensava!
fonte