Script pour supprimer automatiquement les plus vieux dossiers
Résolu/Fermé
anakin6661
Messages postés
86
Date d'inscription
samedi 30 septembre 2006
Statut
Membre
Dernière intervention
5 avril 2022
-
11 mai 2017 à 11:04
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 12 mai 2017 à 17:13
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 12 mai 2017 à 17:13
A voir également:
- Script suppression fichier par date
- Forcer suppression fichier - Guide
- Fichier rar - Guide
- Script vidéo youtube - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
3 réponses
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 922
Modifié le 12 mai 2017 à 17:14
Modifié le 12 mai 2017 à 17:14
Dans mon script, PUSHD permet de monter un lecteur réseau temporaire, sans authentification.
Si jamais tu as besoin de t'authentifier auprès du NAS, il faut utiliser la commande NET USE :
Si jamais tu as besoin de t'authentifier auprès du NAS, il faut utiliser la commande NET USE :
Setlocal enableextensions enabledelayedexpansion
net use * \\adresse_NAS\nom_du_partage /user:user password
cd /d Z: (il faut indiquer la lettre du lecteur réseau, Z: par exemple)
for /F "tokens=*" %%A in ('dir /b /ad /o-d "*.*"') do (set cible=%%~nA)
rmdir /S /Q "!cible!"
Endlocal
exit
daminator25
Messages postés
3324
Date d'inscription
mardi 19 janvier 2010
Statut
Membre
Dernière intervention
25 janvier 2020
309
11 mai 2017 à 11:15
11 mai 2017 à 11:15
Bonjour,
Et tu ne peux pas numéroter tes dossiers ou y inscrire la date dans le nom ?
Ainsi il serait très simple de détecter le plus ancien.
Et tu ne peux pas numéroter tes dossiers ou y inscrire la date dans le nom ?
Ainsi il serait très simple de détecter le plus ancien.
anakin6661
Messages postés
86
Date d'inscription
samedi 30 septembre 2006
Statut
Membre
Dernière intervention
5 avril 2022
6
11 mai 2017 à 11:46
11 mai 2017 à 11:46
La sauvegarde est exporté dans un dossier renommé en fonction de la date de création de la sauvegarde, "%year%%month%%day%Nom_Dossier"
1 sauvegarde par semaine, mais je bloque pour la sélection du dossier par le nom ou par la date de création
1 sauvegarde par semaine, mais je bloque pour la sélection du dossier par le nom ou par la date de création
anakin6661
Messages postés
86
Date d'inscription
samedi 30 septembre 2006
Statut
Membre
Dernière intervention
5 avril 2022
6
11 mai 2017 à 11:49
11 mai 2017 à 11:49
NB: merci d'avoir déplacé le sujet dans la bonne section
daminator25
Messages postés
3324
Date d'inscription
mardi 19 janvier 2010
Statut
Membre
Dernière intervention
25 janvier 2020
309
11 mai 2017 à 12:15
11 mai 2017 à 12:15
Malheureusement je ne connais pas bien les batch je ne saurais te conseiller. J'ai plutot une logique POO et en batch c'est pas tout a fait ça ...
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 922
Modifié le 11 mai 2017 à 13:54
Modifié le 11 mai 2017 à 13:54
Bonjour,
Je ne peux pas t'aider pour ton script VBS, par contre c'est très simple de trouver le plus vieux dossier en batch :
Le commutateur /AD permet de cibler les dossiers et donc d'exclure les fichiers.
Le commutateur /OD permet de lister par ordre chronologique, en tenant compte de la date de dernière modification, pas de la date de création.
Tu associes cette commande à une boucle for pour pouvoir stocker le "dossier le plus vieux" dans une variable appelée !cible! :
Sauf que la commande RMDIR n'effacera pas le dossier si celui-ci n'est pas vide, par conséquent je te suggère de passer par une commande externe telle que del3.exe à télécharger ici :
http://www.info2000.biz/download/del3.zip
Donc la ligne avec la commande RMDIR sera à remplacer par celle-là :
Je ne peux pas t'aider pour ton script VBS, par contre c'est très simple de trouver le plus vieux dossier en batch :
dir /ad /od ton dossier
Le commutateur /AD permet de cibler les dossiers et donc d'exclure les fichiers.
Le commutateur /OD permet de lister par ordre chronologique, en tenant compte de la date de dernière modification, pas de la date de création.
Tu associes cette commande à une boucle for pour pouvoir stocker le "dossier le plus vieux" dans une variable appelée !cible! :
Setlocal enableextensions enabledelayedexpansion
set dossier=nom de ton dossier
pushd %dossier%
for /F "tokens=*" %%A in ('dir /b /ad /od "*.*"') do (set cible=%%~nA)
rmdir /S /Q "!cible!"
popd
Endlocal
exit
Sauf que la commande RMDIR n'effacera pas le dossier si celui-ci n'est pas vide, par conséquent je te suggère de passer par une commande externe telle que del3.exe à télécharger ici :
http://www.info2000.biz/download/del3.zip
Donc la ligne avec la commande RMDIR sera à remplacer par celle-là :
del3.exe /b "!cible!"
anakin6661
Messages postés
86
Date d'inscription
samedi 30 septembre 2006
Statut
Membre
Dernière intervention
5 avril 2022
6
12 mai 2017 à 10:34
12 mai 2017 à 10:34
Je viens de tester, ça supprime le dossier le plus récemment modifié et non le plus ancien.
Mais déjà ça sélectionne un dossier, de quoi m'aider à trouver comment définir le bon dossier.
J'en suis donc bien plus loin qu'avant, Merci
Mais déjà ça sélectionne un dossier, de quoi m'aider à trouver comment définir le bon dossier.
J'en suis donc bien plus loin qu'avant, Merci
barnabe0057
>
anakin6661
Messages postés
86
Date d'inscription
samedi 30 septembre 2006
Statut
Membre
Dernière intervention
5 avril 2022
12 mai 2017 à 12:56
12 mai 2017 à 12:56
Oups ! Oui effectivement j'ai fait l'inverse, voilà la correction :
Setlocal enableextensions enabledelayedexpansion
set dossier=nom de ton dossier
pushd %dossier%
for /F "tokens=*" %%A in ('dir /b /ad /o-d "*.*"') do (set cible=%%~nA)
rmdir /S /Q "!cible!"
popd
Endlocal
exit
anakin6661
Messages postés
86
Date d'inscription
samedi 30 septembre 2006
Statut
Membre
Dernière intervention
5 avril 2022
6
12 mai 2017 à 14:08
12 mai 2017 à 14:08
Merci pour la correction.
Ça fonctionne parfaitement en local, maintenant je vais tester la semaine prochaine sur une tache planifiée si la suppression du fichier le plus ancien passe sur le NAS western Digital
Je te tiens au jus
Ça fonctionne parfaitement en local, maintenant je vais tester la semaine prochaine sur une tache planifiée si la suppression du fichier le plus ancien passe sur le NAS western Digital
Je te tiens au jus
anakin6661
Messages postés
86
Date d'inscription
samedi 30 septembre 2006
Statut
Membre
Dernière intervention
5 avril 2022
6
Modifié le 12 mai 2017 à 14:26
Modifié le 12 mai 2017 à 14:26
Pour la création des dossiers de test, voila ce que j'ai utilisé:
echo off
cls
echo ---------------------------------------------------------------------------
echo Instructions
echo ---------------------------------------------------------------------------
echo Pour effectuer les tests, j'ai besoin de
echo - un dossier moins anciens que la date
echo - plusieurs dossiers plus anciens que la date
echo dans le dossier moins anciens que la date, je dois avoir plusieurs sous dossiers plus anciens et moins anciens que la date
echo Notre date de reference sera le 12/05/2017
echo ---------------------------------------------------------------------------
echo creation du dossier moins anciens
echo ---------------------------------------------------------------------------
echo creation du dossier recent
md C:\Scripts\Test_suppression_dossier\dossier_recent
echo le dossier plus anciens est maintenant cree
echo ---------------------------------------------------------------------------
echo création des dossiers et sous dossiers plus anciens
echo ---------------------------------------------------------------------------
echo.
echo avant nous devons garder la référence du jours :
echo definition du jour
SET day=%date:~0,2%
echo definition du mois
SET month=%date:~3,2%
echo definition de l annee
SET year=%date:~6,4%
echo dossier et sous dossier 1 ***********************
echo configuration de la date plus ancienne
date 01/04/2017
echo création du dossier
md C:\Scripts\Test_suppression_dossier\dossier_ancien1
md C:\Scripts\Test_suppression_dossier\dossier_ancien1\sous_dossier_ancien1
echo le dossier plus anciens est maintenant cree
echo.
echo création du sous dossier ancien
md C:\Scripts\Test_suppression_dossier\dossier_recent\sous_dossier_ancien1
echo le sous dossier est maintenant cree
echo.
echo dossier et sous dossier 2 **********************
echo configuration de la date plus ancienne
date 01/03/2017
echo création du dossier
md C:\Scripts\Test_suppression_dossier\dossier_ancien2
md C:\Scripts\Test_suppression_dossier\dossier_ancien2\sous_dossier_ancien2
echo le dossier plus anciens est maintenant cree
echo.
echo création du sous dossier ancien
md C:\Scripts\Test_suppression_dossier\dossier_recent\sous_dossier_ancien2
echo le sous dossier est maintenant cree
echo.
echo dossier et sous dossier 3 **********************
echo configuration de la date plus ancienne
date 01/02/2017
echo création du dossier
md C:\Scripts\Test_suppression_dossier\dossier_ancien3
md C:\Scripts\Test_suppression_dossier\dossier_ancien3\sous_dossier_ancien3
echo le dossier plus anciens est maintenant cree
echo.
echo création du sous dossier ancien
md C:\Scripts\Test_suppression_dossier\dossier_recent\sous_dossier_ancien3
echo le sous dossier est maintenant cree
echo.
echo reconfiguration de l'ordinateur a la date du jours **************
date %day%/%month%/%year%
echo verification du retour a la date du jour
date /t
echo.
echo création du sous dossier recent
md C:\Scripts\Test_suppression_dossier\dossier_recent\sous_dossier_recent
echo le sous dossier est maintenant cree
echo.
echo le dossier est maintenant pret pour les tests
pause