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.

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.