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.
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.
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.
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.
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 ?".
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 !
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.
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"
@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])
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"
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 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.