Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: jarpon en 24 Septiembre 2023, 15:02 pm



Título: No consigo copiar carpetas mas antiguas. VBS. Help....
Publicado por: jarpon en 24 Septiembre 2023, 15:02 pm
Hola a todos

Necesito copiar carpetas mas antiguas de x dias dentro de una carpeta, hacia otra carpeta por tareas de mantenimiento.

Hago este scrpit pero no me encuentra nada en oSubFolders, y tiene la ruta correcta en ofolder.

Da error en esta linea (Ruta de acceso no encontrada):
   fso.GetFolder(sfolder).Copy sCustomerPicturesPath

Root=C:\Users\Mycomputer\Documents\SD2
MaxAgeInDays=2


Function MoveDeleteOldFolders(Root,MaxAgeInDays)

    Dim fso, sfolder, ofolder, oSubFolders
    Set fso = CreateObject ("Scripting.FileSystemObject")

    If fso.FolderExists(Root) Then

        Set ofolder = fso.GetFolder(Root)
        Set oSubFolders = ofolder.SubFolders
        Set sfolder = Nothing
        On Error Resume Next
        Err.clear

        For Each sfolder in oSubFolders
             If Err.Number <> 0 Then Exit For 'If no permission or no subfolder in folder
             On Error goto 0
            createdDate = FormatDateTime(sfolder.DateCreated, "2")   
            If (DateDiff("d", createdDate, Date) > MaxAgeInDays) Then
                fso.GetFolder(sfolder).Copy sCustomerPicturesPath
                fso.DeleteFolder sfolder, True
            End If
        Next
    End If
End Function

No se donde tengo el fallo.

Gracias por adelantado.


Título: Re: No consigo copiar carpetas mas antiguas. VBS. Help....
Publicado por: jarpon en 24 Septiembre 2023, 17:20 pm
Corrigo, funciona perfectamente hasta esta linea:
      fso.MoveFolder sfolder.path,sCustomerPicturesPath

Aqui me da error de acceso denegado.

sCustomerPicturesPath es una caprpeta de mi propio ordenador, no deberia denegar el acceso.


Function MoveDeleteOldFolders(Root,MaxAgeInDays)


    Dim fso, sfolder, ofolder, oSubFolders
    Set fso = CreateObject ("Scripting.FileSystemObject")

    If fso.FolderExists(Root) Then

        Set ofolder = fso.GetFolder(Root)
        Set oSubFolders = ofolder.SubFolders
        Set sfolder = Nothing

       On Error Resume Next
       Err.clear

        For Each sfolder in oSubFolders
           If Err.Number <> 0 Then
            ESAHMI.ESAMSGBOX Err.Number
            Exit For 'If no permission or no subfolder in folder
         End If
           On Error goto 0
         createdDate = FormatDateTime(sfolder.DateCreated, "2")         'Getting folder date 2 = vbShortDate - Returns date: mm/dd/yyyy

            If (DateDiff("d", createdDate, Date) > MaxAgeInDays) Then
      fso.MoveFolder sfolder.path,sCustomerPicturesPath
                 fso.DeleteFolder sfolder.path, True
           End If
        Next
   Else
      AppendLog("WARNING" &chr(9) &"DataMaintenance: " &chr(9) &"Data _
                maintenance not done, folder doesn't exist. " &Root)
    End If

    Set fso = Nothing
    Set ofolder = Nothing
    Set oSubFolders= Nothing
    Set sfolder = Nothing
End Function


Título: Re: No consigo copiar carpetas mas antiguas. VBS. Help....
Publicado por: jarpon en 24 Septiembre 2023, 18:30 pm
Solucionado, no se puede mover una capeta si esta en C: sin permisos de administrador, la he copiado primero y despues la borro y funciona correctamente.

Un saludo