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

VBScript Discussion :

Date de création de fichiers


Sujet :

VBScript

  1. #1
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut Date de création de fichiers
    Salut à tous!
    Donc, j'ai déja demander de l'aide sur ce forum avec succès, d'ailleur, je les remercies. Il y a juste un dernier truc sur lequel je bloque. J'effectue donc une recherche de fichier par extension et une fois celle-ci effectuée, je copie ces fichiers sur un serveur distant. Ceci fonctionne mais je souhaiterai uniquement copier les fichiers qui ont une date de création inférieur à 1 ans.
    Malgré quelque recherche, je n'est pas trouvé.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'Rechercher les fichiers
    msgbox "Recherche de documents Word (Ceci peut prendre quelques minutes)",, "Programme de sauvegarde"
    strComputer = "." 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    Set colFiles = objWMIService.ExecQuery _
    ("SELECT * FROM CIM_DataFile WHERE Drive = 'C:' AND Extension = 'doc'")
    For Each objFile in colFiles
    'Wscript.Echo objFile.Name
    objFSO.CopyFile objFile.Name,repertoiresauv & Nommachine & "\"
    Next
    msgbox "Copie des fichiers terminés",,"Programme de sauvegarde"
    Merci de m'aider!

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    En cherchant un peu sur le forum, tu aurais trouvé cela :
    http://www.developpez.net/forums/sho...d.php?t=209141
    Je pense que cela devrais t'aider.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Donc voici pour l'instant ce que j'ai mis :
    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
     
    'Rechercher les fichiers
    msgbox "Recherche de documents Word (Ceci peut prendre quelques minutes)",, "Programme de sauvegarde"
    strComputer = "." 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    Set colFiles = objWMIService.ExecQuery _
    ("SELECT * FROM CIM_DataFile WHERE Drive = 'C:' AND Extension = 'doc'")
    For Each objFile in colFiles
    Set objReadOnlyFile = objFSO.GetFile(objFile.Name)
    if DateDiff("d",objReadOnlyFile.DateLastModified ,Date)> 1 then
    'Wscript.Echo objFile.Name
    objFSO.CopyFile objFile.Name,repertoiresauv & Nommachine & "\"
    end if
    Next
    msgbox "Copie des fichiers terminés",,"Programme de sauvegarde"
    A quoi correspond le > 1 dans le If? ainsi que le "d"?
    Merci pour vos réponses!

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Vu les problèmes pour détecter une différence d'un an avec DateDiff, j'utiliserais plutôt cette syntaxe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if objReadOnlyFile.DateLastModified < DateAdd("yyyy", -1, Date) then
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par AlainTech
    Vu les problèmes pour détecter une différence d'un an avec DateDiff, j'utiliserais plutôt cette syntaxe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if objReadOnlyFile.DateLastModified < DateAdd("yyyy", -1, Date) then
    Je dois avoir un probleme avec la boucle If, comment lui dire que si le fichier a une date de création supérieur a 1 ans, de pas le copier.
    Merci!

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    J'ai écrit le code ci-dessus pour donner un exemple de syntaxe sans relire toute la discussion pour connaître la question d'origine mais...
    T'arrive-t-il de réfléchir, parfois?

    Ou bien, comptes-tu venir ici à chaque problème rencontré?

    Dans ce que j'ai écrit, on rentre dans le If si la date du fichier est plus petite que "aujourd'hui moins 1 an".

    Que penses-tu devoir faire pour obtenir ce que tu veux?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  7. #7
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    C'est ce que j'ai fais! Je demande une simple confirmation.
    Voici actuellement ce que j'ai :
    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
     
    msgbox "Recherche de documents Word (Ceci peut prendre quelques minutes)",, "Programme de sauvegarde"
    strComputer = "." 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    Set colFiles = objWMIService.ExecQuery _
    ("SELECT * FROM CIM_DataFile WHERE Drive = 'C:' AND Extension = 'doc'")
    For Each objFile in colFiles
    Set objReadOnlyFile = objFSO.GetFile(objFile.Name)
    if objReadOnlyFile.DateLastModified < DateAdd("yyyy", -1, Date) then
    'Wscript.Echo objFile.Name
    objFSO.CopyFile objFile.Name,repertoiresauv & Nommachine & "\"
    end if
    Next
    msgbox "Copie des fichiers terminés",,"Programme de sauvegarde"
    La copie fonctionne mais il me copie aussi des fichiers qui datent de plus d'un ans. Merci!

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if objReadOnlyFile.DateLastModified < DateAdd("yyyy", -1, Date) then
    Encore une fois, je n'ai pas vérifié tout ton code mais quand je vois ce qui est écrit ci-dessus, ça m'étonnerait qu'on parle de date de création...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  9. #9
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par AlainTech
    Encore une fois, je n'ai pas vérifié tout ton code mais quand je vois ce qui est écrit ci-dessus, ça m'étonnerait qu'on parle de date de création...
    Oui, je sais, mais finalement, je choisis la date de derniere modification, c'est plus adapté pour mon script.
    Pour info, est-il possible de visualiser la table CIM_DataFile?
    Voir si dans cette table il y aura cette date à moins que je me trompe!

  10. #10
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Que crois-tu que tu fais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each objFile in colFiles
    ???

    Je pense que tu as tous les éléments en main pour trouver par toi-même... Si tu veux un peu t'en donner la peine.

    A partir de maintenant, il va falloir réfléchir.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  11. #11
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par AlainTech
    Que crois-tu que tu fais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each objFile in colFiles
    ???

    Je pense que tu as tous les éléments en main pour trouver par toi-même... Si tu veux un peu t'en donner la peine.

    A partir de maintenant, il va falloir réfléchir.
    Ben, je fais une boucle avec le For Each objFile in colFiles. Voila ou j'en suis aujourd'hui :
    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
    'Rechercher les fichiers
    msgbox "Recherche de documents Word (Ceci peut prendre quelques minutes)",, "Programme de sauvegarde"
    strComputer = "." 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    Set colFiles = objWMIService.ExecQuery _
    ("SELECT * FROM CIM_DataFile WHERE Drive = 'C:' AND Extension = 'doc'")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile("c:\windows\system32\scrrun.dll")
    if objFile.DateCreated > DateAdd("yyyy", -1,Date) Then 
    For Each objFile in colFiles
    objFSO.CopyFile objFile.Name, "C:\Documents and Settings\Antoine\Bureau\test\"
    Next
    end if
    'Wscript.Echo objFile.Name
    msgbox "Copie des fichiers terminés",,"Programme de sauvegarde"
    Par contre le "yyyy" va me tenir compte de l'année donc?
    Le code me semble correct, j'ai modifié quelques trucs. Certaines personnes voient-ils quelque chose qui les choques dans ce code?
    Merci!

  12. #12
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben je faudrai te relire... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ..
    Set objFile = objFSO.GetFile("c:\windows\system32\scrrun.dll")
    if objFile.DateCreated > DateAdd("yyyy", -1,Date) Then 
    ..
    avec ce code... que crois tu donc tester..? à part la date de création de scrrun.dll...?

  13. #13
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par bbil
    ben je faudrai te relire... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ..
    Set objFile = objFSO.GetFile("c:\windows\system32\scrrun.dll")
    if objFile.DateCreated > DateAdd("yyyy", -1,Date) Then 
    ..
    avec ce code... que crois tu donc tester..? à part la date de création de scrrun.dll...?
    Ben uniquement l'année!

  14. #14
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par bov13
    Ben uniquement l'année!
    oui mais je ne crois pas que ce soit la date de création du fichier scrrun.dll .. qui t'interesse . non ?

  15. #15
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par bbil
    oui mais je ne crois pas que ce soit la date de création du fichier scrrun.dll .. qui t'interesse . non ?
    Oui exacte mais j'avais essayé d'inserer la varialbe objFile.Name pour specifier au prog que c'est la date de création des fichiers trouvé qui m'interresse mais sa n'avait pas marché. C'est possible de faire sa? J'ai peut-etre fait une petite erreur de synthaxe. Merci!

  16. #16
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    il est ou le code ... 'essayé..' il faut mettre le nom complet du fichier.. avec le chemin.. etc...

  17. #17
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par bbil
    il est ou le code ... 'essayé..' il faut mettre le nom complet du fichier.. avec le chemin.. etc...
    Le probleme, c'est que j'effectue une recherche, donc j'ai pas un fichier mais des dizaines.
    Voila, ce que j'avais mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set objFile = objFSO.GetFile(objFile.Name)
    Peut tu etre plus explicite car je suis pas sur d'avoir tout compris pour ton dernier post. Merci!

  18. #18
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    et avec ce code que ce passe-t'il message d'erreur...? utilise par exemple un wscript.Echo .. pour afficher le traitement appliqué au fichier..

  19. #19
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par bbil
    et avec ce code que ce passe-t'il message d'erreur...? utilise par exemple un wscript.Echo .. pour afficher le traitement appliqué au fichier..
    J'ai évolué pour ce probleme. La ligne suivante fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set objFile = objFSO.GetFile(objFile.Name)
    Puis pour la date, voila ce que j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For Each objFile in colFiles
    if objFile.DateLastModified > DateAdd("yyyy", -1,year(Date)) Then 
    'Wscript.Echo objFile.Name
    objFSO.CopyFile objFile.Name, repertoiresauv & Nommachine & "\"
    end if
    Next
    Donc la, je dois bien copier les fichier dont la date de modification est > a l'année de la date actuel - 1 donc 2005.
    Par conséquent il doit me copier les fichiers supérieur à 2005.
    La copie sa fait bien mais il me copie des fichiers de 2003. Je comprend vraiment pas, j'estime avoir compris le code.
    Merci!

  20. #20
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    j'ai pas vu ou tu as mi le set dans ta boucle...essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For Each objFile in colFiles
      Set FsoFile = objFSO.GetFile(objFile.Name)
      if FsoFile.DateLastModified > DateAdd("yyyy", -1,year(Date)) Then 
        'Wscript.Echo objFile.Name
        objFSO.CopyFile objFile.Name, repertoiresauv & Nommachine & "\"
      end if
    Next

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Date de création de fichier
    Par clao260 dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/05/2008, 10h12
  2. Réponses: 2
    Dernier message: 28/11/2007, 21h02
  3. Impossible de copier la date de création du fichier source
    Par azerazerazer dans le forum Windows XP
    Réponses: 4
    Dernier message: 28/11/2007, 20h13
  4. Recopie de fichiers :date de création du fichier perdue
    Par mugwump dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 30/08/2007, 16h17
  5. Problème de précision sur date de création des fichiers
    Par Bruno Orsier dans le forum Delphi
    Réponses: 2
    Dernier message: 07/06/2007, 14h26

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