exclui o diretório recursivo criado pelo robocopy quando “O nome do arquivo é muito longo”

9

Após executar o robocopy.exe para fazer backup de uma pasta C: \ Users \ sem usar a opção /xj , acabei com um diretório recursivo que era muito longo. Por exemplo, se você executar dir /b /s , receberá o seguinte erro:

O nome do diretório C: \ Usuários \ ... \ AppData \ Local \ Dados do Aplicativo \ Dados do Aplicativo \ Dados do Aplicativo \ Dados do Aplicativo \ Dados do Aplicativo \ Dados do Aplicativo \ Dados do Aplicativo \ Dados do Aplicativo \ Dados do Aplicativo \ Aplicativo Dados \ Dados de Aplicativos \ Dados de Aplicativos são muito longos.

Eu tentei excluí-lo com rmdir "Application Data" /s , mas recebi o erro "O nome do arquivo é muito longo"

Eu olhei para outras soluções, mas achei que poderia usar a ferramenta que causou o problema para resolvê-lo

.

    
por Aaron 24.09.2012 / 13:18

3 respostas

14

Crie um diretório vazio com mkdir empty e use robocopy empty\ "Application Data\" /mir" , o que removerá toda a árvore de diretórios. Em seguida, emita um rmdir empty e rmdir "Application Data para limpar e pronto.

    
por 24.09.2012 / 13:18
4

Você pode ser capaz de cd descer o suficiente no diretório para excluir o que está abaixo e cd voltar ao topo novamente e excluir o que resta.

Se isso não funcionar e você ainda estiver preso, faça o download da versão demo gratuita do meu shell Hamilton C divulgação: Sou o autor) e use o utilitário rm que vem com ele usando o -r (recursiva) e -x (excluir qualquer coisa) opções.

rm -rx directoryname

Meu rm usa o novo nome de arquivo longo do Unicode formato internamente, permitindo manipular caminhos até 32K caracteres, e isso deve ser obtido.

Se descobrir que o problema também envolve permissões, talvez seja necessário usar sudo ou su para elevar, por exemplo,

sudo rm -rx directoryname

Em casos realmente difíceis, você pode ser impedido por uma ACL que impeça o acesso, por exemplo, cacls reports Everyone:(DENY) . Nesse caso, você pode precisar remover essa ACE (entrada de controle de acesso).

cacls directoryname /e /r everyone

Finalmente, eu realmente pretendo que isso seja útil. Meus registros do servidor me dizem que as pessoas estão baixando o meu software para tentar isso e eu quero que isso funcione. Se você encontrar um caso em que isso não aconteceu, espero que você me conte, para que eu possa depurar o motivo e fazê-lo funcionar. Coisas que você não pode deletar acontecem muito e eu gostaria de ter todos os casos cobertos.

    
por 24.09.2012 / 16:37
3

Você também pode tentar um dos seguintes procedimentos:

Resolução 1: Use um nome 8.3 gerado automaticamente para acessar o arquivo

Resolução 2: Renomeie ou mova uma pasta profunda

Resolução 3: Mapeie uma unidade para uma pasta na estrutura do caminho Mapeie uma unidade para uma pasta dentro da estrutura do caminho do arquivo ou pasta de destino. Este método encurta o caminho virtual.

Resolução 4: Use um compartilhamento de rede tão profundo quanto a pasta Se as resoluções 1, 2 e 3 não forem convenientes ou não resolverem o problema, crie um compartilhamento de rede tão profundo na árvore de pastas quanto possível e renomeie as pastas acessando o compartilhamento.

Resolução 5: Use uma ferramenta que possa percorrer caminhos profundos

link

    
por 24.09.2012 / 13:29