84 votes

Comment supprimer des dossiers vides à l'aide de l'invite de commande de Windows ?

Je dois supprimer tous les dossiers vides de mon dossier d'application à l'aide de l'invite de commande de Windows ?

Comment puis-je créer un fichier bat comme celui-là ?

Aidez-moi, s'il vous plaît.

0voto

Casey Points 161

Si vous souhaitez utiliser la ligne de commande ROBOCOPY de Varun dans le menu contextuel de l'Explorateur (c'est-à-dire en faisant un clic droit), voici une importation du registre Windows. J'ai essayé d'ajouter ceci comme commentaire à sa réponse, mais le balisage en ligne n'était pas réalisable.

Je l'ai testé sur mon propre PC Windows 10, mais utilisez-le à vos risques et périls. Il ouvrira une nouvelle invite de commande, exécutera la commande et fera une pause pour que vous puissiez voir la sortie.

  1. Copier dans un nouveau fichier texte :

    Éditeur de registre Windows Version 5.00

    [HKEY_CURRENT_USER \Software\Classes\directory\Background\shell\Delete Dossiers vides \command ] @=" C:\Windows\System32\Cmd.exe /C \" C:\Windows\System32\Robocopy.exe \"%V\" \"%V\" /s /move\" && PAUSE"

    [HKEY_CURRENT_USER \Software\Classes\directory\shell\Delete Dossiers vides \command ] @=" C:\Windows\System32\Cmd.exe /C \" C:\Windows\System32\Robocopy.exe \"%V\" \"%V\" /s /move\" && PAUSE"

  2. Renommer l'extension .txt en .reg

  3. Double-cliquez pour importer.

0 votes

Merci à Varun Sharma pour l'original.

0voto

Devadut S Balan Points 11
for /r "D:\Music" /d %F in (.) do @dir /b "%F" | findstr "^" >nul || rmdir %~fF

D:\Fun est le dossier qui contient les dossiers vides double guillemet en cas d'espace dans le nom du dossier (inutile dans cet exemple)

0voto

Richard Points 417

Une solution plus moderne et plus facile est :

forfiles /p C:\Path\To\Folder /c "cmd /c if @isdir==TRUE rd @file"

Ceci tentera d'exécuter rd sur tous les répertoires situés dans C:\Path\To\Folder . Les répertoires qui contiennent du contenu ne seront pas supprimés.

Si vous excluez /p C:\Path\To\Folder alors il sera exécuté dans le répertoire courant.

Si vous ajoutez /s (avant le /c ), il cherchera également dans les sous-répertoires.

-1voto

hello_earth Points 193

Eh bien, juste une suggestion rapide et sale pour une structure de répertoire simple à 1 niveau sans espaces, [edit] et pour des répertoires ne contenant qu'UN seul type de fichiers que j'ai trouvé utile (à un moment donné, à partir de http://www.pcreview.co.uk/forums/can-check-if-folder-empty-bat-file-t1468868.html ) :

for /f %a in ('dir /ad/b') do if not exist %a\*.xml echo %a Empty

/ad : ne montre que les entrées du répertoire
/b : utiliser un format simple (juste les noms)

[edit] l'utilisation d'un simple astérisque pour vérifier la présence de N'IMPORTE QUEL fichier (%a\* ci-dessus) ne fonctionne pas, merci pour la correction.

donc, la suppression serait :

for /f %a in ('dir /ad/b') do if not exist %a\*.xml rmdir %a

1 votes

Le test ci-dessus passe même si le répertoire est vide.

0 votes

@SteveHollasch merci pour le commentaire, j'ai corrigé le code ci-dessus

-3voto

Cela peut être fait facilement en utilisant rd avec deux paramètres :

rd <folder> /Q /S
  • /Q - Mode silencieux, ne pas demander si ok pour supprimer une arborescence de répertoires avec /S

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

1 votes

Il supprime tous les fichiers, pas seulement les dossiers vides.

1 votes

Le format C : supprimerait également les dossiers vides et serait une commande encore plus courte ;)

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