683 votes

L'équivalent de "rm -rf" pour Windows ?

J'ai besoin d'un moyen de supprimer récursivement un dossier et ses enfants.

Existe-t-il un outil préinstallé pour cela, ou dois-je en écrire un ?

DEL /S ne supprime pas les répertoires.

DELTREE a été supprimé de Windows 2000+.

1 votes

Est-ce que del /s (a) ne fonctionne pas du tout (il n'est disponible que dans certaines versions) ou (b) laisse le répertoire de premier niveau mais supprime tout ce qui se trouve en dessous ou (c) laisse tous les répertoires tout en supprimant tous les fichiers ?

1 votes

@Aaron, réponse c, vous devez utiliser rmdir /s pour supprimer les répertoires et les fichiers.

4 votes

TLDR : utiliser rmdir /S /Q

942voto

Duncan Smart Points 9195

RMDIR ou RD si vous utilisez l'Invite de commande classique (cmd.exe) :

rd /s /q "path"

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

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

/S Supprime tous les répertoires et fichiers du répertoire spécifié en plus du répertoire lui-même. Utilisé pour supprimer une arborescence de répertoires.

/Q Mode silencieux, ne pas demander si l'on peut supprimer une arborescence de répertoires avec /S

Si vous utilisez PowerShell, vous pouvez utiliser Remove-Item (qui est un alias de del , erase , rd , ri , rm et rmdir ) et prend un -Recurse qui peut être court-circuité à -r

rd -r "path"

112 votes

Il faut savoir que pour un grand nombre de fichiers, rmdir /s /q est généralement beaucoup plus rapide que l'opération équivalente "select dir, shift + delete" dans l'explorateur.

2 votes

Pourquoi ne pas utiliser des drapeaux pour faire correspondre les noms des répertoires ? Si je veux supprimer tous les répertoires sous foo\, rmdir /s /q foo\* donne une erreur pour syntaxe incorrecte.

18 votes

Cette méthode ne supprime pas les fichiers, comme le fait rm -rf, et elle renvoie également une valeur non nulle lorsque le répertoire n'existe pas, donc rd /s /q foo && echo "yay" échouera si le répertoire "foo" n'existe pas.

167voto

wbkang Points 394

Admin :

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

Fonctionne pour tout, y compris les fichiers sys

EDIT : J'ai trouvé la meilleure solution qui résout également le problème du chemin d'accès trop long :

mkdir \empty
robocopy /mir \empty folder

5 votes

Mon héros ! Et une astuce : Vous créez votre dossier vide à C:\empty puis, une fois dans chaque dossier fou, on peut simplement faire robocopy /mir c:\empty .

0 votes

Le site takeown m'a aidé car j'ai copié un dossier du système Linux avec rsync par erreur et je n'avais aucun privilège pour supprimer ce dossier... Même la robocopy n'a pas fonctionné. Merci

1 votes

Très belle réponse. Elle fonctionne. (toutes les autres réponses de la page ne fonctionnent pas). Mais cacls est déprécié. Est-il possible de faire une réponse contemporaine, s'il vous plaît ? La deuxième variante fonctionne déjà et n'est pas dépréciée.

132voto

Jim McKeeth Points 22637

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

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

  • /S Supprime tous les répertoires et fichiers du répertoire spécifié, en plus du répertoire lui-même. Utilisé pour supprimer une arborescence de répertoires.

  • /Q Mode silencieux, ne pas demander si l'on peut supprimer une arborescence de répertoire avec /S

15 votes

Merci pour l'explication des paramètres. La réponse acceptée ne le fait pas, malheureusement.

1 votes

La réponse la plus simple et la plus parfaite à la question. Devrait être la réponse acceptée.

22voto

user17481 Points 425

Vous pouvez installer cygwin, qui a rm ainsi que ls etc.

7voto

Branan Points 1483

rmdir /S /Q %DIRNAME%

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X