web-dev-qa-db-fra.com

Commande par lots pour supprimer tous les sous-dossiers portant un nom spécifique

J'ai un annuaire comme tel:

D:\Movies
D:\Movies\MovieTitle1\backdrops\
D:\Movies\MovieTitle2\backdrops\
D:\Movies\MovieTitle3\backdrops\
D:\Movies\MovieTitle4\backdrops\

Comment pourrais-je avoir un fichier de commandes supprimer tous les dossiers nommés "Backdrops"? Je préférerais qu'il s'exécute récursivement à partir du lecteur D:\si possible.

31
Failstyle

Réponse courte:

FOR /d /r . %d IN (backdrops) DO @IF EXIST "%d" rd /s /q "%d"

J'ai obtenu ma réponse à partir d'une des innombrables réponses à la même question sur Stack Overflow:

Outil de ligne de commande pour supprimer récursivement un dossier avec un nom spécifié dans Windows?

Cette commande n'est pas testée, mais je fais suffisamment confiance à ce site pour publier cette réponse.

Comme suggéré par Alex dans un commentaire , ce script batch devrait être infaillible:

D:
FOR /d /r . %d IN (backdrops) DO @IF EXIST "%d" rd /s /q "%d"
60
itd

La réponse ci-dessus n'a pas vraiment fonctionné pour moi. J'ai dû utiliser une combinaison de @ itd solution et @ Groo commentaire. Bravo à eux.

La solution finale pour moi était (en utilisant l'exemple de dossier Backdrop):

FOR /d /r . %%d IN ("backdrops") DO @IF EXIST "%%d" rd /s /q "%%d"
8
JDC

Je vais ouvrir une réponse différente, car elle serait trop exiguë dans les commentaires. On m'a demandé quoi faire, si vous souhaitez exécuter à partir de/vers un dossier différent et je veux donner un exemple de suppression non récursive.

Tout d'abord, lorsque vous utilisez la commande en cmd, vous devez utiliser %d, Mais lorsque vous l'utilisez dans un .bat, vous devez utiliser %%d.

Vous pouvez utiliser un caractère générique pour traiter uniquement les dossiers qui, par exemple, commencent par "backdrops": "backdrops*".

récursif suppression des dossiers commençant dans le dossier où se trouve le .bat:

FOR /d /r . %d IN ("backdrops") DO @IF EXIST "%d" rd /s /q "%d"

Non récursif suppression des dossiers dans le dossier où se trouve le .bat (utilisé avec le caractère générique, car vous ne pouvez pas avoir plus d'un dossier avec le même nom de toute façon):

FOR /d %d IN ("backdrops*") DO @IF EXIST "%d" rd /s /q "%d"


récursif suppression des dossiers commençant dans le dossier de votre choix:

FOR /d /r "PATH_TO_FOLDER" %d IN ("backdrops") DO @IF EXIST "%d" rd /s /q "%d"

Non récursif suppression des dossiers dans le dossier de votre choix (utilisé avec des caractères génériques, car vous ne pouvez pas avoir plus d'un dossier avec le même nom de toute façon):

FOR /d %d IN ("PATH_TO_FOLDER/backdrops*") DO @IF EXIST "%d" rd /s /q "%d"

1
user136036