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.
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:
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"
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"