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.

141voto

Varun Sharma Points 1469

Vous pouvez utiliser le ROBOCOPY commande. Elle est très simple et peut également être utilisée pour supprimer des dossiers vides dans une grande hiérarchie.

ROBOCOPY folder1 folder1 /S /MOVE

Ici, la source et la destination sont toutes deux folder1 En effet, il suffit de supprimer les dossiers vides, au lieu de déplacer d'autres fichiers (nécessaires) dans un autre dossier. /S est de ne pas copier (déplacer - dans le cas ci-dessus) les dossiers vides. C'est également plus rapide car les fichiers sont déplacés à l'intérieur du même lecteur.

1 votes

J'adore la solution du robocopy. MERCI !

1 votes

Très bien ! +1 pour la réponse.

0 votes

J'adore. Mais robocopy est-il toujours disponible pour être la réponse acceptée ?

63voto

Dinesh Rajan Points 339

Une manière plus simple est de faire xcopy pour faire une copie de la structure entière du répertoire en utilisant le commutateur /s. L'aide pour /s dit Copie les répertoires et sous-répertoires sauf ceux qui sont vides.

xcopy dirA dirB /S

où dirA est la source avec des dossiers vides. DirB sera la copie sans dossiers vides.

1 votes

Ce site devrait être la réponse acceptée. C'est simple et agréable ! Merci !

4 votes

En ajoutant le commutateur /I, par exemple. xcopy dirA dirB /SI sautera l'invite qui dit "Est-ce que dirB spécifie un nom de fichier ou un nom de répertoire sur la cible ?".

31 votes

Je reconnais que c'est simple, mais j'ai une structure de répertoire avec plus de 1 To de données. Je ne veux pas répliquer cela !

58voto

corroded Points 9116
for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"

de : http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx

Bien sûr, je le testerais d'abord sans effacer avant de faire cette commande. Voici également une version modifiée issue des commentaires qui inclut les dossiers avec des espaces :

 for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"

P.S. Il y a d'autres commentaires dans l'article du blog qui pourraient vous aider, alors n'oubliez pas de les lire avant d'essayer.

2 votes

J'aime bien celui-là. Le lien ici mentionne que celui-ci est plus facile (similaire à celui ci-dessous) : for /f "tokens=*" %%d in ('dir /ad/b/s ^| sort /R') do rd "%%d"

0 votes

Où mettez-vous le chemin vers les dossiers ?

1 votes

@MAGx2 J'avais aussi cette question. Je n'arrive pas à trouver comment poster des rétro-citations dans les commentaires, mais j'utilise ([rétro-citation]dir /ad/b/s "c : \path "[backquote])

16voto

tomasz86 Points 173

Vous n'avez pas besoin de usebackq :

FOR /F delims^= %%A IN ('DIR/AD/B/S^|SORT/R') DO RD "%%A"

7 votes

Merci Tom... vous avez raison. cependant, dans une ligne de commande, il s'agirait en fait d'utiliser un seul % à l'opposé d'un fichier batch. Utilisateurs : notez que RD ne supprime pas les fichiers ni les répertoires contenant des fichiers. simplement les répertoires vides. Donc c'est totalement sûr. FOR /F delims^= %A IN ('DIR/AD/B/S^|SORT/R') DO RD "%A"

0 votes

Si vous utilisez cygwin, assurez-vous de vérifier l'ordre des chemins, ou faites explicitement pointer SORT vers la version dos.

8voto

BozoJoe Points 1136

Pour ajouter à la réponse corrodée de la même page référencée, voici une version PowerShell http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx#8408736

Get-ChildItem -Recurse . | where { $_.PSISContainer -and @( $_ | Get-ChildItem ).Count -eq 0 } | Remove-Item

ou, plus succinctement,

gci -R . | where { $_.PSISContainer -and @( $_ | gci ).Count -eq 0 } | ri

le crédit revient à l'auteur du message

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