Code BATCH

eljojo_e Messages postés 1255 Statut Membre -  
eljojo_e Messages postés 1255 Statut Membre -
Bonjour,

Actuellement j'ai un petit fichier bat qui me sauvegarde tous les jours deux fichier access avec xcopy.

Les sauvegardes vont se placer dans deux dossiers nommer comme ceci :

set jour=%date:~0,2%
set mois=%date:~3,2%
set annee=%date:~6%
set heure=%time:~0,8%

1er fichier
set a=Base-%annee%-%mois%-%jour%

2eme fichier
set aa=Source-%annee%-%mois%-%jour%

comment puis-je faire pour qu'automatiquement, le bat supprime les sauvegarde de plus de 2 mois ?

Merci d'avance,

Cordialement,

2 réponses

  1. Lord Zero Messages postés 487 Statut Membre 115
     
    En batch, je trouve sa relou par contre en VBS c'est sympa.
         strComputer = "."
    
       Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2" )
       Set objFSO = CreateObject("Scripting.FileSystemObject" )
       Set objShell = CreateObject("Shell.Application" )   
      strFolderName = ("Chemin du dossier")
    
       Set colSubfolders = objWMIService.ExecQuery _
           ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
               & "Where AssocClass = Win32_Subdirectory " _
                   & "ResultRole = PartComponent" )
    
       arrFolderPath = Split(strFolderName, "\" )
       strNewPath = ""
       For i = 1 to Ubound(arrFolderPath)
           strNewPath = strNewPath & "\\" & arrFolderPath(i)
       Next
       strPath = strNewPath & "\\"
    
       Set colFiles = objWMIService.ExecQuery _
           ("Select * from CIM_DataFile where Path = '" & strPath & "'" )
    
       For Each objFile in colFiles
           Set objReadOnlyFile = objFSO.GetFile(objFile.Name)
            'Wscript.Echo objFile.Name & chr (10) & objReadOnlyFile.DateLastModified
        if DateDiff("d",objReadOnlyFile.DateLastModified ,Date)>nombre de jour then
    
           objFile.delete
        end if
       Next
    
       For Each objFolder in colSubfolders
           GetSubFolders strFolderName
       Next
    
       Sub GetSubFolders(strFolderName)
           Set colSubfolders2 = objWMIService.ExecQuery _
               ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
                   & "Where AssocClass = Win32_Subdirectory " _
                       & "ResultRole = PartComponent" )
    
           For Each objFolder2 in colSubfolders2
               strFolderName = objFolder2.Name
               arrFolderPath = Split(strFolderName, "\" )
               strNewPath = ""
               For i = 1 to Ubound(arrFolderPath)
                   strNewPath = strNewPath & "\\" & arrFolderPath(i)
               Next
               strPath = strNewPath & "\\"
    
               Set colFiles = objWMIService.ExecQuery _
                   ("Select * from CIM_DataFile where Path = '" & strPath & "'" )
    
               For Each objFile in colFiles
               Set objReadOnlyFile = objFSO.GetFile(objFile.Name)
               if DateDiff("d",objReadOnlyFile.DateLastModified ,Date)>)>nombre de jour then
                   'Wscript.Echo objFile.Name & chr (10) & objReadOnlyFile.DateLastModified
                   objFile.delete
    
                 end if
    
               Next
    
               GetSubFolders strFolderName
           Next
       End Sub
    


    les parties en gras sont a modifier.Tu peux l'excuter avec une commande dans ton batch. Il scan dossier, sous-dossier, sous sous-dossier...
    0
  2. eljojo_e Messages postés 1255 Statut Membre 155
     
    Wo merci pour ce code, mais je n'y comprends strictement rien (et j'aime bien comprendre ^^) , je fais un petit de batch et connais pas mal le vba sur excel et access mais ca je ne comprends pas ^^

    Y aurait-il pas un moyen de gérer les dates en batch ?
    0