J'essaie de supprimer tous les dossiers de tous les lecteurs avec le modèle de nommage ci-dessus , mais uniquement au premier niveau de dossier, c'est-à-dire directement sous la lettre de lecteur, comme par exemple :

F:\this folder's name contains FOO and should be deleted

...sans confirmation ni message d'erreur (par exemple au cas où aucun dossier n'est trouvé), avec un fichier batch.

J'ai trouvé ceci: supprimez tous les dossiers avec tmp dans le nom à l'aide d'un fichier batch et je me demande si la solution à partir de là est un bon point de départ?

@echo off
set dir="c:\FOLDERLOCATION\"
FOR /D /R %dir% %%X IN (*.tmp) DO RMDIR /S /Q "%%X"
pause
exit
answer

Lire et suivre FOR- Exécutez une commande plusieurs fois de manière conditionnelle. . Vous pouvez appliquer soit FOR-Folders , soit FOR-Command Results comme suit :

FOR-Folders (inconvénients : insensible à la casse ; les caractères génériques n'autorisent aucun modèle de type regex, nous devons donc exécuter une boucle plusieurs fois).

@echo off
set "dir=c:\FOLDERLOCATION\"
pushd "%dir%"
::                          ↓↓↓↓                      echo for debugging
FOR /D /R %%X IN (*foo*) DO echo RMDIR /S /Q "%%~fX"
FOR /D /R %%X IN (*bar*) DO echo RMDIR /S /Q "%%~fX"
::                          ↑↑↑↑                      echo for debugging
popd
pause

Résultats de la commande FOR en combinaison avec findstr(avantages : findstrpermet indépendamment à la fois un modèle de recherche sensible à la casse et de type regex) :

@echo off
set "dir=c:\FOLDERLOCATION\"
FOR /F "delims=" %%X IN ('dir /B/S /A:D "%dir%" ^| findstr /I "foo|bar"') DO 2>NUL echo RMDIR /S /Q "%%~fX"
:: ECHO in above line merely for debugging
pause

Un inconvénient est que la dirliste est générée de manière statique, nous devons donc rediriger les messages d'erreur en utilisant2>NUL