Qu’est-il arrivé à deltree, et quel est son remplacement?

Dans les versions antérieures de MS-DOS – je veux dire la version 7, mais je peux me tromper – il y avait une commande deltree , qui supprimait récursivement tous les sous-répertoires et fichiers d’un chemin donné.

deltree n’existe plus, mais del ne semble pas hériter de la possibilité de supprimer un arbre. del /s supprime les fichiers, mais pas les dossiers.

Comment facilement (c.-à-d. En une seule commande) supprimer un arbre d’un fichier de commandes?

Comme d’autres l’ont mentionné, la commande rd a le commutateur /s pour supprimer récursivement les sous-répertoires. Vous pouvez le combiner avec le commutateur /q pour supprimer de force un sous-répertoire (et son contenu) sans y être invité.

 rd /s /qc:\foobar 

Ce qui manque à tout le monde, c’est que rd n’est pas un remplacement exact pour deltree car apparemment ( presque ) chaque page renvoyée par Google pour windows deltree ferait croire. La commande deltree fonctionnait à la fois pour les répertoires et les fichiers , ce qui en faisait une commande de suppression tout-en-un pratique. Les deux suivantes sont valides:

 deltree /yc:\foobar deltree /yc:\baz.txt 

Cependant, rd (sans surprise) ne fonctionne que pour les répertoires . En tant que telle, seule la première de ces commandes est valide tant que la seconde donne et erreur et laisse le fichier non supprimé:

 rd /s /qc:\foobar rd /s /qc:\baz.txt 

De plus, la commande del ne fonctionne que pour les fichiers, pas pour les répertoires, de sorte que seule la deuxième commande est valide alors que la première donne une erreur:

 del /f /qc:\foobar del /f /qc:\baz.txt 

Il n’y a pas de moyen intégré pour supprimer des fichiers et des répertoires comme cela pourrait être fait avec deltree . Utiliser rd et del individuellement est au mieux gênant car il faut distinguer si un object système de fichiers (nom de fichier / dossier) est un fichier ou un répertoire qui n’est pas toujours possible ou pratique.

Vous pouvez copier la commande deltree partir d’un système d’exploitation précédent, mais elle ne fonctionnera que sur les versions 32 bits de Windows, car il s’agit d’une commande DOS 16 bits (même sous Windows 9x).

Une autre option consiste à créer un fichier de commandes qui appelle à la fois del et rd ; quelque chose comme ça:

 ::deltree.bat @echo off rd %* 2> nul del %* 2> nul 

Vous appelez ça comme ça:

 deltree.bat /s /q /fc:\foobar deltree.bat /s /q /fc:\baz.txt 

Cela appelle à la fois rd et del , en passant les arguments et en redirigeant la sortie vers nul pour éviter l’erreur que l’un d’eux émettra invariablement.

Vous voudrez probablement personnaliser le comportement pour adapter ou simplifier les parameters ou autoriser les messages d’erreur, mais deltree tout, ce n’est pas idéal et ne remplace pas directement deltree .

Une alternative consiste à obtenir un outil tiers, mais en trouver un est un véritable exercice de création de requêtes de recherche.

Il a été remplacé par les commandes: RMDIR ou RD

Supprimer tous les sous-répertoires avec / S

Utilisez-le tranquillement avec le / Q

Exemple:

 RMDIR /S /Q Folder2Delete RD /S /Q Folder2Delete 

Documentation:

  • DELTREE sur Wikipedia
  • RMDIR sur Wikipedia
  • RMDIR chez Microsoft

Se sentant nostalgique, j’ai écrit mon propre deltree.exe. Il fonctionne avec les répertoires et les fichiers et utilise SHFileOperation () pour la vitesse.

https://github.com/ai7/toolbox/tree/master/deltree

 deltree v1.01 [Mar 27 2015, 16:31:02] (gcc 4.9.1) Usage: deltree [options]  ... Options: -y yes, suppresses prompting for confirmation -s silent, do not display any progress dialog -n do nothing, simulate the operation -f force, no prompting/silent (for rm compatibility) -r ignored (for rm compatibility) Delete directories and all the subdirectories and files in it. 

Il prend des caractères génériques et vous pouvez l’utiliser comme unix rm:

 deltree -rf * 
 rmdir /s /q directory 
  $ help rd
 Supprime (supprime) un répertoire.

 RMDIR [/ S] [/ Q] [lecteur:] chemin
 RD [/ S] [/ Q] [lecteur:] chemin

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

     / Q Mode silencieux, ne demande pas si ok pour supprimer une arborescence de répertoires avec / S

De nos jours, vous pouvez utiliser Powershell pour effectuer la même tâche:

 powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force" 

En fait, les commandes RMDIR et RD du système d’exploitation Windows moderne fusionnent les commandes RD et Deltree de Win 98 en une seule commande. C’est une commande interne qui vous empêche de trouver RD.exe et RMDIR.exe.

En tapant cette “RD /?” en cmd sans double qoutes vous obtiendrez exactement ce que vous voulez.

supprimer un répertoire et tout son contenu de manière récursive

 rd /s MY_DOOMED_DIR