Vbscript

marie059 Messages postés 1 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 1 avril 2008 - 1 avril 2008 à 15:30
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 2 avril 2008 à 07:12
Bonjour

je dois crée un script en vbscript qui dans un dossier et sous dossier choisi authorisera uniquement la lecture pour les fichiers dont la date de cration date de plus de 2 jours ...

étant donné que je connais pas le language je galère pas mal

pouvez vous m'aider svp ?

j'ai trouver un script qui liste les fichiers et sous dossier dans le repertoire choisi

Dim shellO: Set ShellO = CreateObject("WScript.Shell")
Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim SListe: Dim Schemin
'Dossier à traiter
Schemin = "C:\stock" 'emplacement du dossier
'Dossier Bureau de windows + ""
SListe = ShellO.SpecialFolders("Desktop")
If Right(SListe, 1) <> "" Then SListe = SListe & ""
'Ouverture du fichier contenant l'arborescence du répertoire à traiter vers le Bureau
Dim Fichier: Set Fichier = FSO.CreateTextFile(SListe & "Liste.txt", 1, True)
'Écrire la premiere ligne de la liste
Fichier.WriteLine (Schemin)
'Lister l'arborescence du dossier
ListerDossier Schemin, Fichier
'Fermeture du fichier contenant l'arborescence du répertoire à traiter
Fichier.Close

Function ListerDossier(Schemin, Fichier) 'Lister l'arborescence du dossier
On Error Resume Next
Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim ObjRep: Set ObjRep = FSO.GetFolder(Schemin) 'dossier
Dim ObjSubRep: Set ObjSubRep = ObjRep.SubFolders 'sous-dossiers
Dim ObjSubRepItem
For Each ObjSubRepItem In ObjSubRep 'Traiter chaque sous-dossiers
Fichier.WriteLine (ObjSubRepItem.Path) 'Ecrire le path dans la liste
ListerDossier ObjSubRepItem.Path, Fichier 'traiter les sous-dossiers
Next
Dim ObjRepFind: Set ObjRepFind = FSO.GetFolder(Schemin) 'dossier
Dim ObjSubFile: Set ObjSubFile = ObjRepFind.Files 'Fichiers
Dim ObjSubFileItem
For Each ObjSubFileItem In ObjSubFile 'Traiter chaque fichier du répertoire
Fichier.WriteLine ObjSubFileItem.Path 'Ecrire le path dans la liste
Next
End Function

un autre qui m'indique depuis combien de temps le fichier choisi à été crée

dim MaDate
set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("C:\Documents and Settings\abenabdallah\Bureau\Nouveau Document Microsoft Word.doc")

MaDate = objFile.DateCreated
wscript.Echo "il s'est écoulé " & DateDiff("d",now,Madate) & " Jours" & vbCrlf & " depuis le " & Madate


ce que je n'arrive pas à faire c'est dans un premier temps faire en sorte qu'il me liste uniquement les fichiers dont la date de création est superieur à 2 jours

help please

1 réponse

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
2 avril 2008 à 07:12
 Bonjour,

Exemple avec un Dictionary:

Option Explicit
Sub CreateFilesList(argFolder)
    Dim objFile, subFolder
    For Each objFile In argFolder.Files
        If DateDiff("d", objFile.DateCreated,Date) > cstNbrJour Then
           Set objDicoFiles(objFile.Path) = objFile
        End if
    Next
    For Each subFolder In argFolder.SubFolders
        Call CreateFilesList(subFolder)
    Next
End Sub

Const cstNbrJour = 2
Dim objFso, objDicoFiles
Dim strPath, arrDicoKeys, i, strResult
strPath = "F:\SCRIPTS\TEST" 'Dossier à modifier

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objDicoFiles = CreateObject("Scripting.Dictionary")

'Parcours arborescence et incrémentation Dictionnaire
Call CreateFilesList(objFso.GetFolder(strPath))

'Enumération Dictionnaire
arrDicoKeys = objDicoFiles.Keys
For i = 0 To objDicoFiles.Count-1
    strResult = strResult &vbCr& arrDicoKeys(i)
Next
MsgBox strResult

jean-marc
0
Rejoignez-nous