"rm-rf" equivalente para o Windows?

Preciso de uma forma de apagar recursivamente uma pasta e os seus filhos.

Há alguma ferramenta pré-construída para isto, ou preciso de escrever uma?

DEL /S não apaga directórios.

DELTREE foi removido do Windows 2000 +

Author: TylerH, 2008-09-19

18 answers

RMDIR ou RD se estiver a usar o comando Classic Prompt (cmd.exe):

rd /s /q "path"

Se está a usar o PowerShell, pode usar Remove-Item (que é apelidado para del, erase, rd, ri, rm e rmdir e toma um argumento -Recurse que pode ser curto-circuito para -r

rd -r "path"
 482
Author: Duncan Smart, 2017-07-05 10:56:07

Administração:

takeown /r /f folder
cacls folder /c /G "ADMINNAME":F /T
rmdir /s folder

Funciona para qualquer coisa, incluindo arquivos de sistemas

Editar: eu realmente encontrei a melhor maneira que também resolve o caminho do arquivo problema demasiado longo também:

mkdir \empty
robocopy /mir \empty folder
 114
Author: wbkang, 2014-01-02 03:41:30

RMDIR [/S] [/Q] [drive:]path

RD [/S] [/Q] [drive:]path

  • /S remove todas as pastas e ficheiros na pasta indicada, para além da própria pasta. usado para remover uma árvore de pastas.

  • /Q Modo silencioso, não perguntar se está ok para remover uma árvore de pastas com /S

 82
Author: Jim McKeeth, 2017-10-18 21:21:25

Pode instalar o cygwin, que tem rm assim como ls etc.

 15
Author: user17481, 2008-09-18 23:14:45

Vá para o caminho e Active este comando.

rd /s /q "FOLDER_NAME"

/ s: remove a pasta indicada e todas as sub-pastas, incluindo quaisquer ficheiros. Use / s para remover uma árvore.

/q: executa o rmdir em modo silencioso. Apaga as pastas sem confirmação.

/? : Mostra a ajuda na linha de comandos.

 13
Author: Sireesh Yarlagadda, 2016-03-01 19:32:12

rmdir /S /Q %DIRNAME%

 5
Author: Branan, 2008-09-18 23:12:44

Para apagar uma pasta (quer exista ou não), use o seguinte:

if exist myfolder ( rmdir /s/q myfolder )
 5
Author: Clay, 2016-06-01 19:59:06

Tente este comando:

del /s foldername
 3
Author: Jeremy Ruten, 2008-09-18 23:11:01

Rmdir / s dirname

 2
Author: Brian Mitchell, 2008-09-18 23:10:48

Pode instalar O GnuWin32 e usar os comandos * nix nativamente no windows. Instalo isto antes de instalar qualquer outra coisa numa cópia fresca de menta do windows. :)

 2
Author: epochwolf, 2008-09-19 00:03:57
Eis o que tens de fazer...

Crie um ficheiro em lote com a seguinte linha

RMDIR /S %1

Guarde o seu ficheiro em lote como Remove.bat e coloque - oC:\windows

Criar a seguinte chave de Registo

HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)

Lançar regedit e actualizar o valor por omissão HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)\default com o seguinte valor

"c:\windows\REMOVE.bat" "%1"

É isso! Agora você pode carregar com o botão direito em qualquer directório e usar a função RMDIR
 2
Author: Louis, 2012-09-22 08:10:38
Primeiro, vamos rever o que faz:
C:\Users\ohnob\things>touch stuff.txt

C:\Users\ohnob\things>rm -rf stuff.txt

C:\Users\ohnob\things>mkdir stuff.txt

C:\Users\ohnob\things>rm -rf stuff.txt

C:\Users\ohnob\things>ls -l
total 0

C:\Users\ohnob\things>rm -rf stuff.txt

Existem três cenários em que {[2] } é habitualmente utilizado quando se espera que volte 0:

  1. o caminho indicado não existe.
  2. a localização indicada existe e é uma pasta.
  3. a localização indicada existe e é um ficheiro.
Vou ignorar toda a coisa das permissões, mas ninguém usa permissões ou tenta negar-se a si próprio o acesso de escrita nas coisas do Windows. (Ok, isso é suposto ser uma piada...).

Primeiro define ERRORLEVEL para 0 e depois apaga a localização apenas se existir, usando comandos diferentes dependendo se é ou não uma pasta. IF EXIST não configura ERRORLEVEL para 0 se o caminho não existir, por isso definir o ERRORLEVEL para 0 primeiro é necessário para detectar correctamente o sucesso de uma forma que imite o uso normal rm -rf. Guardar o RD com IF EXIST é necessário porque RD, ao contrário de rm -f, irá lançar um erro se o alvo não existir.

O seguinte excerto de script assume que DELPATH é pré-Citado. (Isto é seguro quando você faz algo como SET DELPATH=%1. Tente colocar ECHO %1 em um .cmd e passá-lo um argumento com espaços nele e ver o que acontece por si mesmo). Depois de o excerto terminar, você pode verificar a falha com IF ERRORLEVEL 1.

: # Determine whether we need to invoke DEL or RD or do nothing.
SET DELPATH_DELMETHOD=RD
PUSHD %DELPATH% 2>NUL
IF ERRORLEVEL 1 (SET DELPATH_DELMETHOD=DEL) ELSE (POPD)
IF NOT EXIST %DELPATH% SET DELPATH_DELMETHOD=NOOP
: # Reset ERRORLEVEL so that the last command which
: # otherwise set it does not cause us to falsely detect
: # failure.
CMD /C EXIT 0
IF %DELPATH_DELMETHOD%==DEL DEL /Q %DELPATH%
IF %DELPATH_DELMETHOD%==RD RD /S /Q %DELPATH%
A questão é que tudo é mais simples quando o ambiente está em conformidade com o POSIX. Ou se você instalar um MSYS mínimo e apenas usar isso.
 2
Author: binki, 2017-03-20 10:18:27
Eis o que funcionou para mim: Tenta diminuir o comprimento do caminho. I. E.:: mudar o nome de todas as pastas que levam a tal arquivo para os menores nomes possíveis. Diz nomes de uma letra. Continue a mudar o nome para cima na hierarquia de pastas. Por este u efetivamente reduzir o comprimento do caminho. Agora finalmente tente apagar o arquivo imediatamente.
 0
Author: Gaurav Deochakke, 2015-03-25 13:01:10

Isto irá apagar "a minha pasta" e o seu conteúdo sem qualquer aviso:

rd /s /q "C:\Users\jerry.g\AppData\Roaming\my folder"
 0
Author: JerryGoyal, 2018-07-04 07:12:23

Usando Powershell 5. 1

 get-childitem *logs* -path .\ -directory -recurse | remove-item -confirm:$false -recurse -force

Substituir registos pelo nome da pasta que deseja apagar.

Get-childitem procura na pasta de crianças com o nome recursivamente na localização actual (.).

Remove-item apaga o resultado.

 0
Author: n_y, 2018-09-03 06:57:45

Também existe deltree se estiver numa versão mais antiga do windows.

Eu realmente gosto deste site para encontrar comandos: SS64: del-Delete ficheiros

 -1
Author: Jason Wadsworth, 2008-09-18 23:14:50

Del /s /q directorytobedeleted

 -2
Author: joe, 2015-12-30 10:58:13
 -3
Author: wnoise, 2008-09-18 23:09:50