Script pour supprimer automatiquement les plus vieux dossiers
Résolu
anakin6661
Messages postés
86
Date d'inscription
Statut
Membre
Dernière intervention
-
barnabe0057 Messages postés 14455 Date d'inscription Statut Contributeur Dernière intervention -
barnabe0057 Messages postés 14455 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai encore besoin d'un coup de main concernant un script pour automatiser une suppression de sous dossier.
De façon automatique, une fois par semaine, un nouveau sous dossier est créé par robocopy (sauvegarde d'un dossier partagé) sur un NAS Western Digital.
Pour ne pas saturer le NAS destinataire de ces sauvegardes, je cherche à mettre en place un script sur un de nos serveur en tache planifié.
Le dossier contient une dizaine de sous dossier de 250Go environ.
Je cherche à automatiser la suppression du plus vieux dossier.
Nous sommes obligé de passer par robocopy et non par un logiciel style cobian car le système shadow copy est déjà utilisé sur le serveur de fichier pour une autre sauvegarde.
Je bute totalement sur la façon de sélectionner le sous dossier le plus anciens
un problème est aussi à prendre en compte, la sélection doit ce passer à la racine de ce dossier et ne pas entrer dans les sous dossiers contenant encore toute une multitude de dossier, etc ... pour ne pas supprimer des dossiers ailleurs que le plus vieux sous dossier.
Nous avions trouvé un fichier vbs qui nous sélectionnait le plus vieux dossier mais qui n'arrivait pas à supprimer sur le NAS (question de droit en tache planifié)
Ne sachant pas comment mettre les informations de connexion sur un vbs, je suis obligé de passer par un .bat
à moins que quelqu'un m'apporte des éclaircissement sur le vbs qui m'est totalement inconnu
Le vbs que j'ai essayé d'utiliser:
J'ai encore besoin d'un coup de main concernant un script pour automatiser une suppression de sous dossier.
De façon automatique, une fois par semaine, un nouveau sous dossier est créé par robocopy (sauvegarde d'un dossier partagé) sur un NAS Western Digital.
Pour ne pas saturer le NAS destinataire de ces sauvegardes, je cherche à mettre en place un script sur un de nos serveur en tache planifié.
Le dossier contient une dizaine de sous dossier de 250Go environ.
Je cherche à automatiser la suppression du plus vieux dossier.
Nous sommes obligé de passer par robocopy et non par un logiciel style cobian car le système shadow copy est déjà utilisé sur le serveur de fichier pour une autre sauvegarde.
Je bute totalement sur la façon de sélectionner le sous dossier le plus anciens
un problème est aussi à prendre en compte, la sélection doit ce passer à la racine de ce dossier et ne pas entrer dans les sous dossiers contenant encore toute une multitude de dossier, etc ... pour ne pas supprimer des dossiers ailleurs que le plus vieux sous dossier.
Nous avions trouvé un fichier vbs qui nous sélectionnait le plus vieux dossier mais qui n'arrivait pas à supprimer sur le NAS (question de droit en tache planifié)
Ne sachant pas comment mettre les informations de connexion sur un vbs, je suis obligé de passer par un .bat
à moins que quelqu'un m'apporte des éclaircissement sur le vbs qui m'est totalement inconnu
Le vbs que j'ai essayé d'utiliser:
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set MonRep=FSO.GetFolder("D:\MonDossier")
datemin = Date()
for each sf in monrep.subfolders
If sf.datelastmodified < datemin then
datemin = sf.datelastmodified
chemin = sf.path
end if
next
set rep_to_delete = FSO.GetFolder(chemin)
rep_to_delete.delete
A voir également:
- Script suppression fichier par date
- Forcer suppression fichier - Guide
- Fichier bin - Guide
- Fichier .dat - Guide
- Fichier epub - Guide
- Fichier rar - Guide
3 réponses
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
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.
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!"
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