IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Lister les fichiers récents d'un répertoire [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 24
    Points
    24
    Par défaut Lister les fichiers récents d'un répertoire
    Bonsoir, je reviens vers vous car je suis bloqué. Depuis mon script batch j'aurais besoin de lister les fichiers d'un ou de plusieurs répertoires créés depuis une certaine date.
    Par exemple lister les fichiers créés depuis moins d'un mois. J'ai essayé avec forfiles mais cela ne convient pas car cela prend en compte la date de modification d'un fichier et non celle de création. J'ai cherché si on pouvait modifier ce paramètre pour que ce soit la date de création qui soit prise en compte mais il semble que ça ne soit pas possible.
    Si vous avez une idée de comment faire je suis preneur, merci d'avance de votre attention.

  2. #2
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Bon je m'auto-répond...
    En batch je n'ai pas trouvé, donc mon script .cmd génère un vbscript qu'il appel ensuite. J'avais fais en sorte de lister les fichiers de moins de 30 jours récursivement du disque système mais c'est beaucoup trop long. Du coup je ne balaye que les répertoires désirés. Voici le code au cas ou ça serve à quelqu'un (il y à peut être des erreurs je ne connais rien au vbscript) reste juste à ajouter les répertoires désirés ou de balayer %SystemDrive% de manière récursive si vous n'êtes pas pressé.:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Dim WshShell, oSystemDrive, oWINDIR
    
    ' Création de l'objet Shell
    Set WshShell = WScript.CreateObject("WScript.Shell")
    ' Récupération de la variable d'environnement
    oSystemDrive = WshShell.ExpandEnvironmentStrings("%SystemDrive%")
    oWINDIR = WshShell.ExpandEnvironmentStrings("%WINDIR%")
    
    WScript.Echo("Démarrage du listing des fichiers de moins de 30 jours." & VbCrLf _
    & "Une fois terminé vous serez avertis par le message 'Listing completed'.")  
    
    Dim fso, ObjOutFile, DateSysteme, AgeMaximalFichiers
    DateSysteme = Date
    AgeMaximalFichiers = "30" 
    'Création du File System Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    'Création du fichier de sortie
    Set ObjOutFile = fso.CreateTextFile("Out.txt") 
    
    'Appel de la fonction GetFile qui va lister les fichiers et répertoires de moins de 30 jours de %SystemDrive%
    GetFiles(oSystemDrive & "\")
    
    'Appel de la fonction GetFile qui va lister les fichiers et répertoires de moins de 30 jours de %WINDIR%
    GetFiles(oWINDIR & "\")
    
    'Fermeture du fichier de sortie et affiche le message "Listing completed" quand c'est terminé
    ObjOutFile.Close
    WScript.Echo("Listing completed")
    
    Function GetFiles(FolderName)   
    	On Error Resume Next
        Dim ObjFolder  
    	Dim ObjFolders
    	Dim ObjFiles  
    	Dim ObjFile     
    	Set ObjFolder = fso.GetFolder(FolderName)   
    	Set ObjFiles = ObjFolder.Files
    	Set ObjFolders = ObjFolder.SubFolders
    	'Ecriture de tous les fichiers de moins de 30 jours dans le fichier de sortie
    	For Each ObjFile In ObjFiles 
    	If (DateDiff("d", ObjFile.DateCreated, DateSysteme) < CInt(AgeMaximalFichiers)) Then
    		ObjOutFile.WriteLine("[Fichier créé le " & left(ObjFile.DateCreated,10) & "]---    " & ObjFile.Path)
    	end if
    	Next        
    	For Each ObjFolder In ObjFolders       
    	'Ecriture des sous-répertoires (path, nom et date de création)  de moins de 30 jours     
    	If (DateDiff("d", ObjFolder.DateCreated, DateSysteme) < CInt(AgeMaximalFichiers)) Then
    		ObjOutFile.WriteLine("[Répertoire créé le " & left(ObjFolder.DateCreated,10) & "]--- " & ObjFolder.Path)
    	end if
    	Next   
    End Function

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Comment lister les fichiers contenus dans un répertoire Sharepoint
    Par Riri80 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2020, 09h50
  2. Réponses: 1
    Dernier message: 29/04/2014, 19h54
  3. Réponses: 5
    Dernier message: 26/06/2007, 00h25
  4. Lister les fichiers de plusieurs sous-répertoire ?
    Par ratbiker dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 25/11/2005, 22h20
  5. [CF][PPC/C#] Comment lister les fichiers d'un répertoire ?
    Par dady dans le forum Windows Mobile
    Réponses: 18
    Dernier message: 20/05/2005, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo