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
[Résolu] Suppression de sous dossiers mais pas racine
Modérateur : WIN32-[GG]
[Résolu] Suppression de sous dossiers mais pas racine
Modifié en dernier par a2rennes le 29 sept. 2016 09:05, modifié 1 fois.
Re: Suppression de sous dossiers mais pas le dossier racine
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
Merci X^Y pour ta réponse rapide
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
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
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...
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?
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
re !
Il suffit de modifier la commande dir comme ceci :
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
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"
)
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.
[Résolu] Suppression de sous dossiers mais pas le dossier ra
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!
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!
Re: [Résolu] Suppression de sous dossiers mais pas racine
Salut !
Content d'avoir pu t'être utile
Bonne continuation en prog' batch && à plus !
Content d'avoir pu t'être utile
Bonne continuation en prog' batch && à plus !