Page 1 sur 1

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

Posté : 27 sept. 2016 22:25
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 ;-)

Re: Suppression de sous dossiers mais pas le dossier racine

Posté : 28 sept. 2016 05:25
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"

)

)

Re: Suppression de sous dossiers mais pas le dossier racine

Posté : 28 sept. 2016 09:54
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 :-)

Re: Suppression de sous dossiers mais pas le dossier racine

Posté : 28 sept. 2016 11:35
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?

Re: Suppression de sous dossiers mais pas le dossier racine

Posté : 28 sept. 2016 17:42
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 :)

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

Posté : 29 sept. 2016 09:04
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

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

Posté : 29 sept. 2016 13:10
par X^Y
Salut !
Content d'avoir pu t'être utile :)
Bonne continuation en prog' batch && à plus !