339 votes

Comment supprimer récursivement un répertoire à partir de la ligne de commande sous Windows ?

Quel est l'équivalent Windows de rm -r [directory-name] ?

481voto

Colin Pickard Points 8089

deltree si je me souviens de mon DOS .


Il semble qu'il ait été mis à jour... c'est ce que vous voulez :

RMDIR /S

Cela supprime le répertoire C:\test avec des invites :

rmdir c:\test /s

Cela fait la même chose, sans les invites :

rmdir c:\test /s /q

En ce qui concerne la partie sudo de votre question, si vous avez besoin de plus de privilèges, vous pouvez d'abord ouvrir un nouveau Shell en tant qu'autre compte utilisateur en utilisant la commande runas comme ceci :

runas /user:Administrator cmd
rmdir c:\test /s /q

1 votes

@FarmBoy, toutes mes excuses, il semblerait que mes souvenirs remontent à bien trop loin. J'ai mis à jour la réponse pour Windows XP et plus récent.

16 votes

Oui deltree est une ancienne commande DOS. Elle a été supprimée dans XP et remplacée par rmdir /s

4 votes

Que signifie le drapeau /s ?

75voto

Sean Points 741

Si vous voulez supprimer une structure de dossier longue et compliquée à partir de l'invite de commande que RmDir ne touchera pas et que même Explorer ne peut afficher, j'ai trouvé que robocopy peut être très efficace pour supprimer la structure. Dans l'exemple ci-dessous, nous avons une structure massive à l'intérieur du dossier administrateur, la structure est si profonde que rien ne peut la supprimer. Nous créons un nouveau dossier vide appelé (assez étrangement !) "nouveau dossier". Nous utilisons ensuite la commande robocopy, en lui indiquant que le dossier source est "new folder" et le dossier de destination " D:\Administrator "avec le paramètre /MIR, ce qui signifie qu'il purgera tout ce qui ne se trouve pas dans le dossier source.

robocopy "D:\new folder" D:\Administrator /MIR

Dans ce cas, les chemins d'accès aux dossiers étaient si longs qu'ils ne tenaient même pas dans la fenêtre d'invite de commande Screen buffer, mais Robocopy va parcourir la structure et supprimer tous les fichiers et dossiers "supplémentaires" (c'est-à-dire tout ce qui n'est pas dans le nouveau dossier vide, c'est-à-dire tout).

18 votes

C'est la seule solution qui fonctionne lorsque votre chemin d'accès compte plus de 250 caractères impairs.

1 votes

Incroyable. Merci beaucoup. Il a supprimé une structure de 2043 pages pour moi, et il en supprime maintenant une plus profonde.

18voto

Devesh Khandelwal Points 337

Vous pouvez effectuer les opérations suivantes dans PowerShell, si vous êtes sous Windows Vista+ :

rm C:\path\to\delete -r -f[orce]

10 votes

Windows 10 dit -f est ambiguë. Mais vous pouvez exécuter rm -r -force <path>

0 votes

rm : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters :C

9voto

Vincent Fourmond Points 189

Pour moi, ce qui marche c'est

del /s dir

Vous pouvez ajouter /q pour désactiver la confirmation. Je n'ai jamais réussi à obtenir rmdir fonctionne (sur XP)

7 votes

Vous devriez probablement arrêter d'utiliser XP, il n'est plus supporté ...

5 votes

Pour moi, cela supprime tous les fichiers de manière récursive, mais ne supprime pas les répertoires eux-mêmes - -. dir n'est pas non plus supprimée.

0 votes

Pour moi, ce qui fonctionne, c'est de faire d'abord cela, puis de terminer par la réponse acceptée (qui ne fonctionne pas toute seule, parfois).

5voto

Paulmann Points 51

Si vous avez un chemin vraiment très long, (comme moi à cause d'une erreur de programme java), même robocopy ne peut pas le faire. Il est descendu pendant environ 30 secondes dans mon chemin et s'est arrêté.

Ma solution : si vous pouvez déplacer l'ensemble du chemin du problème d'un dossier à l'autre, alors vous pouvez couper de manière récurrente et répétée des escaliers de répertoires depuis le haut.

Ce lot joue au ping-pong entre les deux répertoires leer et leer2 et supprime 8 "bibliothèques" à chaque fois. à chaque fois. Si votre chemin contient des fichiers, vous devez ajouter d'autres commandes pour les effacer.

recurdel.cmd
:loop
move c:\leer\libraries\libraries\libraries\libraries\libraries\libraries\libraries\libraries c:\leer2
rd /S /Q c:\leer\libraries
move c:\leer2\libraries\libraries\libraries\libraries\libraries\libraries\libraries\libraries c:\leer
rd /S /Q c:\leer2\libraries
GOTO loop

0 votes

Brillant. Merci beaucoup.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X