Est-il possible de diriger une liste de fichiers vers RMDIR sous Windows?

9

J'écris un fichier de commandes pour l'invite de commande Windows pour supprimer tous les répertoires correspondant à une certaine expression.

J'utilise d'abord DIRpour renvoyer une liste simple de répertoires correspondant à l'expression. Je voudrais diriger chaque ligne de sortie dans la commande RMDIR, comme ceci:

DIR *.delete /A:D /B /S | RMDIR /S /Q

Cependant, la commande ci-dessus ne semble pas fonctionner. Je ne comprends pas bien pourquoi cela ne fonctionne pas et je serais reconnaissant à tous ceux qui peuvent offrir une explication.

user78755
la source

Réponses:

5

Vous pouvez utiliser les éléments suivants dans votre fichier de commandes:

FOR /f "tokens=*" %%a in ('dir *.delete /A:D /B /S') DO RMDIR /S /Q %%a

Cela utilise la FORcommande pour parcourir la sortie d'une commande donnée (dans ce cas dir *.delete /A:D /B /S, et pour chaque élément renvoyé, elle exécutera la commande spécifiée avec l'instruction DO,. RMDIR /S /QL'élément est référencé par la variable %%a.

La raison pour laquelle cela ne fonctionne pas est simplement de canaliser la DIRsortie RMDIRparce que vous envoyez la sortie entière (plusieurs lignes) à la fois en tant que paramètre unique RMDIR. La FORcommande décompose cette sortie, parcourt chaque élément et l'envoie ensuite RMDIRune par une.

Gaffe
la source