{vbs} effacer dossier le plus ancien

Résolu
Bonjour,

complétement rouillé au niveau du vbs, je galère un peu pour faire un petit script VBS. Je chercher à effacer le sous répertoire le plus ancien dans un répertoire donné.

En fait il s'agit de backups, mais sur des disques externes différents (un par semaine). Du coup Cobian n'arrive pas à gérer le nombre limité de backup qu'il faut garder.

Je voudrais donc lancer un petit script vbs avant ma tâche pour trouver le nom du répertoire le plus ancien et l'effacer.

J'ai trouvé plusieurs scripts mais tous effacent des dossiers plus vieux que X jours par rapport à la date du jour. Moi je voudrais juste récupérer la date de création / modification la plus ancienne, le nom de ce dossier et l'effacer..

tout aide sera la bienvenue,

merci d'avance,
Configuration: Windows XP
Safari 532.8

4 réponses

  1. Contributeur
    Salut,
    à tester mais ça devrait le faire :
    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
    0
    1. Ca marche du tonnerre de Dieu.. merci beaucoup..;
      0
      1. Contributeur
        Re,
        Ok, mais ne pas oublier de mettre en "résolu" la prochaine fois ;)
        0
        1. en fait j'étais en train de modifier ton code pour y mettre une condition de taille dispo sur le disque. Je comptais le faire après ..

          du coup je poste le code modifié, si ça peut servir à quelqu'un d'autre.

          'Script pour effacer plus vieux répertoire dans un dossier
          'Si espace restant inférieur à nécessaire
          'calcul de l'espace restant
          Set objFSO = CreateObject("Scripting.FileSystemObject")
          Set objDrive = objFSO.GetDrive("G:")  'Vérifier si lettre correcte 
          
          Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
          Set MonRep=FSO.GetFolder("G:\BCKPS") 'vérifier chemin
          
          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)
          
          if objDrive.AvailableSpace/1073741824 < 1024 then 'taille à définir en Go
          rep_to_delete.delete
          end if
          
          0
          1. Salut,
            je voudrais utiliser ce script, si je comprends bien on peut definir la taille qui doit rester disponible en go, mais je ne sais pas comment et ou exactement inscrire 5 Go par exemple

            if objDrive.AvailableSpace/1073741824 < 1024 then 'taille à définir en Go
            rep_to_delete.delete

            merci à l'avance
            0