[Résolu] Suppression de sous dossiers mais pas racine

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
a2rennes
Batcheur occasionnel
Messages : 4
Enregistré le : 27 sept. 2016 16:34

[Résolu] Suppression de sous dossiers mais pas racine

Message par a2rennes »

Bonjour,

J'ai fini par m'inscrire car malgré la foultitude d'exemples et docs de programmation DOS sur le net, je bute toujours sur mon projet actuel de batch:
Un logiciel me génère des dossiers de sauvegarde et régulièrement je dois purger pour éviter la saturation du disque dur.
Le but serait d'effectuer ce nettoyage par un batch qui scratcherait les chemins désigné par un simple clic (ou rattachement en tache planifiée).
Le menu de sélection ne m'a pas posé de problème mais l'instruction de suppression me bloque.

En gros, j'ai ça:

D:\Sauvegardes\Septembre\Backup_default
D:\Sauvegardes\Septembre\Backup_TMP_20160926
D:\Sauvegardes\Septembre\Backup_TMP_20160927

Je souhaiterais conserver "Backup_default" (+son contenu) et supprimer seulement les sous-répertoires "Backup_TMP_xxxxxxxx" sans supprimer les fichiers divers (exe, txt, etc) contenu dans le dossier "Septembre".
J'étais parti sur une commande FOR /D %%a ('%DirPath1% /d Backup_TMP*') DO RMDIR /s /q %%a
NB: %DirPath1% est égal à D:\Sauvegardes\Septembre\ car je compte utiliser cette formule pour d'autres répertoire (DirPath2, etc)

J'espère avoir été assez précis pour quérir un peu d'aide de votre part.
Merci par avance ;-)
Modifié en dernier par a2rennes le 29 sept. 2016 09:05, modifié 1 fois.
X^Y
Batcheur débutant
Messages : 10
Enregistré le : 27 sept. 2015 19:12

Re: Suppression de sous dossiers mais pas le dossier racine

Message par X^Y »

Salut !

Code : Tout sélectionner

set racine=D:\Sauvegardes\Septembre

dir "%racine%" /ad /b > listeDesDossiers.txt

for /f "tokens=*" %%a in (listeDesDossiers.txt) do (

if /i not "%%a"=="Backup_default" (

rd /s /q "%racine%\%%a"

)

)
a2rennes
Batcheur occasionnel
Messages : 4
Enregistré le : 27 sept. 2016 16:34

Re: Suppression de sous dossiers mais pas le dossier racine

Message par a2rennes »

Merci X^Y pour ta réponse rapide 8-)

Ton code fonctionne parfaitement mais après test, je trouverais plus sûr de pouvoir supprimer les dossiers "Backup_TMP_xxxxxxxx" à partir de leur racine "Backup_TMP_*" car j'avais un dossier en plus de "Backup_default" qui à disparu aussi (rien de grave) car je ne l'avais pas mentionné avec "if /i not "%%a"=="Backup_default" (".
Cela m'éviterait de vérifier si les arborescences n'incluent pas des dossiers spécifiques...
Merci par avance :-)
a2rennes
Batcheur occasionnel
Messages : 4
Enregistré le : 27 sept. 2016 16:34

Re: Suppression de sous dossiers mais pas le dossier racine

Message par a2rennes »

J'ai tenté cette approche en supprimant le "not" avec l'idée que tous les dossiers somportant le nom "Backup_TMP" serait effacés, mais sans succès... :cry:

set racine=D:\Sauvegardes\Septembre
dir "%racine%" /ad /b > ListeNettoyage.txt
for /f "tokens=*" %%a in (ListeNettoyage.txt) do (
if /i "%%a"=="*Backup_TMP*" (
rd /s /q "%racine%\%%a"
)
)

Le fichier "ListeNettoyage.txt" est bien créée, le batch se déroule sans erreur mais rien ne se produit..
Une idée?
X^Y
Batcheur débutant
Messages : 10
Enregistré le : 27 sept. 2015 19:12

Re: Suppression de sous dossiers mais pas le dossier racine

Message par X^Y »

re !
Il suffit de modifier la commande dir comme ceci :

Code : Tout sélectionner

set racine=D:\Sauvegardes\Septembre

dir "%racine%\Backup_TMP_*" /ad /b > ListeNettoyage.txt

for /f "tokens=*" %%a in (ListeNettoyage.txt) do (

rd /s /q "%racine%\%%a"

)
et de supprimer la ligne conditionnelle qui devient superflue puisque le txt ne contient plus que des noms de dossiers commençant par "Backup_TMP_" (tu peux vérifier le contenu du fichier en ajoutant un exit sous la commande dir)

Heureusement que le dossier qui a été supprimé n'était pas important…
Pour faire des tests avec les commandes de suppression, je te conseille vivement d'utiliser des fichiers bidons (ou éventuellement en utilisant une autre commande mais ça n'est pas toujours possible).

Merci d'avoir répondu :)
Modifié en dernier par X^Y le 01 oct. 2016 02:15, modifié 1 fois.
a2rennes
Batcheur occasionnel
Messages : 4
Enregistré le : 27 sept. 2016 16:34

[Résolu] Suppression de sous dossiers mais pas le dossier ra

Message par a2rennes »

Bonjour X^Y,

Tout fonctionne à merveille!
Je teste en effet mes codes sur un clone de mon futur projet, pour éviter les aléas et pertes catastrophiques ;)
En tout cas merci à toi.
Problème vite résolu et de manière simple et efficace.
Bonne journée et peut-être à une prochaine! :P
X^Y
Batcheur débutant
Messages : 10
Enregistré le : 27 sept. 2015 19:12

Re: [Résolu] Suppression de sous dossiers mais pas racine

Message par X^Y »

Salut !
Content d'avoir pu t'être utile :)
Bonne continuation en prog' batch && à plus !
Répondre