Comment faire pour supprimer les dossiers vides automatiquement dans Windows
Au fil du temps, des centaines de dossiers vides et de fichiers indésirables peuvent occuper votre disque dur. Bien que les fichiers indésirables occupent de l'espace disque et puissent être nettoyés à l'aide des paramètres de nettoyage de disque ou de stockage, les répertoires vides restent.
Les dossiers vides ne prennent pas d'espace disque, mais pour mieux organiser vos données, vous souhaiterez peut-être les tailler de temps en temps.
Cet article décrit différentes méthodes pour rechercher et supprimer des dossiers vides sur votre ordinateur.
Comment rechercher et supprimer des dossiers vides dans Windows?
Un dossier ou répertoire vide est un dossier qui ne contient ni fichier ni sous-répertoire. Les dossiers vides ne prennent pas d'espace disque, mais trop d'entre eux peuvent être gênants. Pour les rechercher et les supprimer, utilisez l'une des méthodes ci-dessous.
Important: il n'est généralement pas recommandé d'exécuter récursivement un outil automatisé ou un fichier de commandes pour supprimer les dossiers vides de l'ensemble du lecteur système. Cela est dû au fait que certains programmes peuvent ne pas fonctionner et générer une erreur bizarre lorsqu'il trouve un dossier essentiel manquant. Comme toujours, l'avertissement standard s'applique. Assurez-vous d'avoir les sauvegardes appropriées de préférence sur un disque externe, avant de manipuler avec le système de fichiers ou le registre Windows.
CONNEXES: Rechercher et supprimer des fichiers de 0 octet de manière récursive dans un dossier dans Windows
Commençons par un outil graphique soigné, suivi de méthodes de ligne de commande et de script natives.
1. Supprimez les dossiers vides à l'aide de l'utilitaire «Rechercher des fichiers-n-dossiers vides»
Find Empty Files-n-Folders est un excellent outil qui peut rechercher et supprimer des fichiers vides (0 octet) et des dossiers vides de manière récursive sous une arborescence de dossiers.
Téléchargez Find Empty Files-n-Folders (programme d'installation de 600 Ko) depuis Ashisoft.com.
Sélectionnez le dossier et cliquez sur Analyser maintenant.

L'outil répertorie les fichiers et dossiers vides dans des onglets séparés.
Cliquez sur Marquer tous les dossiers, puis sur Supprimer les dossiers .

De même, pour supprimer les fichiers de 0 octet dans l'arborescence de dossiers sélectionnée, cliquez sur l'onglet Fichiers vides .
Ashisoft.com a d'autres outils impressionnants que vous pouvez consulter!
2. Supprimez les dossiers vides à l'aide des commandes «for» et «rd»
Vous pouvez utiliser les commandes internes d'invite de commandes for
et rd
pour énumérer la liste des dossiers et supprimer ceux vides.
- Appuyez sur la touche Maj et maintenez-la enfoncée, faites un clic droit sur un dossier et cliquez sur Ouvrir la fenêtre de commande ici . Cela ouvre l'invite de commande à l'emplacement du dossier actuel, qui peut également être vérifié dans la console. Remarque: Vous devez vous assurer que vous exécutez la commande suivante à partir du chemin exact du dossier parent où vous devez rechercher et supprimer les sous-dossiers vides.
- Une fois que vous êtes dans le répertoire souhaité dans l'invite de commandes, exécutez cette ligne de commande:
for / f "delims ="% i in ('dir / s / b / ad ^ | sort / r') do rd "% i" 2> NUL
Cela supprime tous les répertoires vides des sous-répertoires du chemin du dossier de base, y compris les dossiers vides imbriqués.
La ligne de commande ci-dessus est une gracieuseté de Raymond Chen de Microsoft, via son blog The Old New Thing. Dans cet article, la ligne de commande de Raymond a été légèrement modifiée afin de supprimer également les noms de dossier contenant des espaces.
Comment fonctionne la commande
La commande ci-dessus répertorie tous les sous-répertoires (récursivement) dans le chemin de base actuel et trie la liste ( sort /r
) dans l'ordre inverse. Le tri dans l'ordre inverse consiste à s'assurer que l'énumération est effectuée de bas en haut. Ceci est important pour supprimer des répertoires vides, car vous devez supprimer les sous-répertoires avant de supprimer le parent.
Ensuite, il tente de supprimer la liste des répertoires (dans l'ordre de tri inverse) à l'aide de la commande RD
. Si un répertoire n'est pas vide, il passe au répertoire suivant et ainsi de suite. La commande 2>NUL
garantit la suppression du texte de sortie «répertoire non vide».
Le seul inconvénient de la méthode ci-dessus est qu'elle n'est pas utile si vous souhaitez simplement trouver des dossiers vides sans les supprimer. Si vous souhaitez rechercher la liste des dossiers vides, utilisez la ligne de commande dans le paragraphe ci-dessous ou suivez toute autre méthode décrite dans cet article.
Rechercher des dossiers vides, mais ne pas supprimer
Pour rechercher uniquement les dossiers vides sans les supprimer, utilisez cette syntaxe de ligne de commande:
pour / r "D: \ uploads \ 2019" / d% F dans (.) do @dir / b "% F" | findstr "^"> nul || écho% ~ fF
Il vous montre la sortie contenant la liste des répertoires vides.
Supposons que vous ayez des dossiers imbriqués vides comme celui-ci:
C: \ 1 └───2 └───3 └───4
L'exécution de la commande ci-dessus répertorie uniquement le dossier le plus vide → 4
. Techniquement, c'est correct car un dossier ne peut pas être considéré comme vide s'il existe un sous-dossier ou un fichier.
3. Recherchez et supprimez les dossiers vides à l'aide de la commande Robocopy
Robocopy est un puissant outil de copie de fichiers intégré qui possède de nombreuses fonctionnalités avancées. Nous avons couvert Robocopy dans l'article Comparer le contenu de deux dossiers dans Windows.
Supposons que vous ayez un dossier nommé cars
qui contient plusieurs sous-dossiers dont certains sont vides. Nous allons supprimer les vides en utilisant Robocopy.

- Ouvrez une fenêtre d'invite de commandes
- Tapez la commande suivante et appuyez sur ENTRÉE:
robocopy "d: \ tarifs automobiles \ voitures" "d: \ tarifs automobiles \ voitures" / S / move
La chose la plus importante à noter ici est que les chemins source et de destination sont (délibérément) les mêmes. Le paramètre
$config[ads_text6] not found/S
indique à Robocopy de ne pas déplacer les dossiers vides vers le chemin «de destination». Comme nous avons mentionné les mêmes chemins pour la source et la destination, Robocopy supprimera simplement les dossiers vides en raison de la présence du commutateur/S
Les dossiers vides dans le chemin choisi sont maintenant effacés.
Vous voulez trouver des dossiers vides mais pas les supprimer?
Vous pouvez utiliser l'argument de ligne de commande /L
(liste uniquement) avec Robocopy pour qu'il exécute uniquement une exécution à sec au lieu d'effectuer l'opération de copie / déplacement réelle.
/L
:: List uniquement - ne copiez pas, n'horodatez pas et ne supprimez aucun fichier.
/MOVE
:: MOVE fichiers AND dirs (supprimer de la source après la copie).
/S
:: copier les sous-répertoires, mais pas les sous-répertoires vides.

Vous pouvez voir le nombre de fichiers dans une colonne entendre le chemin du dossier. Les 0
signifient que ces dossiers ne contiennent aucun fichier.
Mettons cette commande à l'épreuve!
Mon dossier %APPDATA%
est plein de dossiers vides ajoutés par des programmes obsolètes.

Avant le nettoyage, le dossier Appdata \ Roaming avait 681 dossiers, comme le montrent les propriétés du dossier.

J'ai ouvert l'invite de commande et exécuté la commande suivante:
robocopy "% appdata%" "% appdata%" / S / MOVE
Remarque: la variable d'environnement% appdata% se traduit par le dossier C:\Users\{username}\AppData\Roaming
. Vous pouvez utiliser le chemin d'accès complet au dossier ou la variable d'environnement équivalente avec Robocopy. N'importe quel.

Il a réussi à supprimer 94 dossiers vides dans mon dossier et sous-dossiers %APPDATA%
.

Note de l'éditeur: dans la sortie de ligne de commande sous la section des statistiques, l'erreur suivante est apparue:
"ERREUR 32 (0x00000020) Suppression du répertoire source C: \ Users \ ramesh \ AppData \ Roaming \Le processus ne peut pas accéder au fichier car il est utilisé par un autre processus. »

Parce que nous avons demandé à Robocopy de déplacer ( /MOVE
) le répertoire% APPDATA%, l'outil essayait de nettoyer le dossier «source» après l'avoir «déplacé» vers la destination. Cela n'a pas pu, car% APPDATA% est un dossier spécial. L'erreur ne se produit pas lorsque vous utilisez un chemin de répertoire qui n'est pas un dossier spécial. Comme tout allait bien, j'ai simplement ignoré l'erreur (triviale).
4. Rechercher et supprimer des dossiers vides à l'aide de PowerShell
La ligne de commande PowerShell suivante supprime récursivement les dossiers vides situés sous le dossier de base spécifié.
- Démarrez PowerShell et tapez la commande suivante:
(gci "folderpath" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | retirer l'objet
Remplacez «chemin du dossier» par l'emplacement du dossier de base. Par exemple, je spécifie le dossier Roaming ici:
(gci "C: \ Users \ ramesh \ AppData \ Roaming" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | retirer l'objet
Cela supprime tous les sous-dossiers vides sous mon dossier
%appdata%
manière récursive et n'affiche aucune sortie, sauf s'il rencontre des erreurs.
Notez que la commande PowerShell ci-dessus efface uniquement le dernier niveau du dossier imbriqué vide. Par exemple, supposons que vous ayez des dossiers imbriqués vides comme celui-ci:
C: \ 1 └───2 └───3 └───4
L'exécution de la commande ci-dessus efface le dossier le plus vide → 4
. Réexécuter le script effacera un autre niveau d'un dossier imbriqué ( 3
), etc.
Vous pouvez utiliser le script PowerShell sur Svendsen Tech PowerShell Wiki pour travailler avec des dossiers imbriqués.
Alternativement, vous pouvez utiliser la méthode suivante, une solution de script Windows pour effacer récursivement tous les dossiers vides, y compris ceux imbriqués.
$config[ads_text6] not foundTrouver des dossiers vides, mais vous ne voulez pas les supprimer?
Vous voulez obtenir la liste des dossiers vides, mais vous ne voulez pas les supprimer? Utilisez plutôt cet exemple de ligne de commande:
(gci "C: \ Users \ ramesh \ AppData \ Roaming" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | sélectionnez FullName | Out-GridView

La commande génère la liste des dossiers vides avec des chemins d'accès complets à un contrôle de vue de grille.

Conseil: dans la vue en grille, vous pouvez tout sélectionner et copier la sélection en appuyant sur Ctrl + C
C'est une bonne idée de prévisualiser la liste avant d'exécuter la commande pour supprimer les dossiers.
5. Rechercher et supprimer des dossiers vides à l'aide de Windows Scripting
L'employé de Microsoft Jeremy Jameson a écrit un VBScript qui supprime récursivement les dossiers vides. J'ai ajouté plus de lignes dans le script pour forcer la suppression des répertoires vides en lecture seule, afficher la liste agrégée des dossiers vides. Il affiche également la liste des dossiers vides qui n'ont pas pu être supprimés, ainsi que la description de l'erreur correspondante.
Le script est capable de supprimer des répertoires vides imbriqués dans des sous-dossiers.
Option Explicit If (WScript.Arguments.Count 1) Then WScript.Echo ("Usage: cscript DeleteEmptyFolders.vbs {path}") WScript.Quit (1) End If Dim strPath: strPath = WScript.Arguments (0) Dim fso: Set fso = CreateObject ("Scripting.FileSystemObject") Dim objFolder: Set objFolder = fso.GetFolder (strPath) Dim sDelList, sDelErr, sFolderPath Dim iCnt iCnt = 0 DeleteEmptyFolders objFolder Sub DeleteEmptyFolders 'Folder Resum (Next) Error lors de l'accès aux jonctions, etc. Pour chaque sous-dossier dans le dossier folder.SubFolders DeleteEmptyFolders Next On Error Goto 0 If folder.SubFolders.Count = 0 And folder.Files.Count = 0 Then sFolderPath = folder.Path On Error Resume Next fso.DeleteFolder folder .Path, True If Err.number 0 Then sDelErr = sDelErr & Err.number & ":" & Err.description & _ vbCrLf & sFolderPath & vbCrLf & vbCrLf Sinon sDelList = sDelList & vbCrLf & sFolderPath iCn t = iCnt + 1 End If On Error Goto 0 End If End Sub If sDelList = "" And sDelErr = "" Then WScript.Echo "Aucun dossier vide trouvé sous le" & _ "" "" & strPath & "" "" & "arborescence" WScript.Quit End If If sDelList "" alors sDelList = "Liste des dossiers vides supprimés" & vbCrLf _ & String (38, "-") & vbCrLf & sDelList & vbCrLf & _ vbCrLf & "Total:" & iCnt & "dossiers supprimés". Si sDelErr "" alors sDelErr = "Ces dossiers n'ont pas pu être supprimés" & _ vbCrLf & String (45, "-") & vbCrLf & sDelErr WScript.Echo sDelList & vbCrLf & vbCrLf & sDelErr

Vous pouvez exécuter le script de 2 manières:
via l'invite de commande, en exécutant:
cscript.exe delempty.vbs "chemin_dossier"

via GUI, en exécutant:
wscript.exe delempty.vbs "chemin_dossier"
via le menu Envoyer à
Vous pouvez créer un raccourci vers le script dans votre dossier SendTo et le nommer Supprimer les dossiers vides .

Ensuite, cliquez avec le bouton droit sur un dossier dans lequel vous souhaitez supprimer les sous-dossiers vides de manière récursive → cliquez sur Envoyer vers → cliquez sur Supprimer les dossiers vides dans le menu Envoyer vers.
Vous verrez la liste des dossiers vides supprimés et le total, et les dossiers qui n'ont pas pu être supprimés avec les codes d'erreur respectifs affichés.

C'est tout! Si vous connaissez d'autres méthodes pour supprimer des dossiers vides dans Windows, sachez-le dans la section commentaires ci-dessous.