Eu preciso excluir uma pasta contendo outras pastas e arquivos dentro. Eu tentei del
e rmdir
comandos, mas às vezes eles falham com algumas linhas de erro:[PATH]: The directory isn't empty.
Existe alguma boa alternativa?
windows
command-line
Francesco Zanini
fonte
fonte
Respostas:
Isso acontece muito com meus scripts de construção automatizados.
Eu acho que o motivo pode ser algum aplicativo que tenha um arquivo aberto nesse diretório com "compartilhamento excluir". Ou seja, o aplicativo permite a exclusão do arquivo (e é por isso que acho que a chamada DeleteFile não falha), mas o arquivo só desaparece depois que o aplicativo fechar o identificador.
Isso significa que o arquivo ainda pode estar lá quando o
rmdir
comando tenta excluir a pasta, daí a mensagem de erro. Logo depois disso, o aplicativo fechará sua alça, o arquivo desaparecerá e, quando você inspecionar a pasta para ver qual arquivormdir
estava falando, ficará vazio.Pelo menos essa é a minha teoria.
A solução proposta por Harry Johnston parece ser boa. Somente eu inseriria uma pausa entre os
rmdir
comandos. É claro que o Windows não possui um comando de "pausa" facilmente programável (correção: as versões antigas do Windows não, as mais recentes têm - veja os comentários). Mas se granularidade de segundos é suficiente, pode-se usarping
para criar uma pausa:Então, no total:
fonte
rm -rf /directory/
deve ser global em todos os sistemas operacionais.timeout /t 3
pause
comando).Experimentar:
ou:
para pular as mensagens de confirmação.
fonte
del
ermdir
não pergunto nada, elas apenas enviam algumas linhas como a da descrição.rmdir /s
excluirá tudo o que for possível excluir. Você pode ter arquivos bloqueados por um programa, arquivos somente leitura ou arquivos que você precisa de acesso administrativo para excluir. Não existe um único comando que cuide de todas essas situações para vocêVocê pode ter alguns arquivos somente leitura, pode usar a opção del / F para se livrar deles usando
Você também pode ter alguns arquivos ocultos e, se realmente tiver certeza de que deseja excluí-los, poderá fazer isso usando
Se isso ainda falhar, você não tem permissão para excluir alguns arquivos ou alguns deles ainda estão em uso.
fonte
Eu acredito que há um bug no Windows 7 (e talvez em outras versões) que às vezes causa esse sintoma; ou pode ser um bug em software de terceiros. (Você tem o Symantec Endpoint Protection instalado por acaso?)
Enfim, eu já o encontrei com bastante frequência. Na maioria dos casos, o problema pode ser resolvido executando
rd /s /q
duas ou três vezes seguidas.Se isso estiver em um arquivo em lotes, você poderá fazer algo assim:
fonte
Use
del
nos arquivos internos ermdir
remova a pasta.Para usar o
rmdir
método para remover todos os arquivos também, use a/S
opção antes do nome do diretório e/Q
suprima da solicitação de exclusão. Essa é a melhor maneira de fazer isso, pois você não perde nenhum arquivo. Tenha cuidado ao usar a opção / Q, pois ela não avisará sobre os atributos de arquivo oculto ou do sistemafonte
Se você usar o nó, poderá usar a dependência rimraf assim:
execute a instalação:
npm install rimraf -g
excluir pasta:
rimraf SourceFolder
Isso me ajudou ao obter o erro:
fonte
As versões mais antigas das pastas do Windows (DOS, Windows 95/98 / ME)
DELTREE
são equivalentes aRM
ouRMDIR
. Eu usoDELTREE
na minha estação de trabalho Windows 7 em arquivos em lote muito bem.fonte
Eu acho que você pode usá-lo assim:
fonte