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 :

Copier des fichiers de + de 30 jours


Sujet :

VBScript

  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Points : 76
    Points
    76
    Par défaut Copier des fichiers de + de 30 jours
    Bonjour,

    je souhaiterai copier des fichiers de + de 30 jours d'un dossier "Source" à un autre "Destination"

    Je rappelle que je débute en VBS.

    Merci d'avance pour votre aide et compréhension

    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Dim Source
    Dim Destination
    Dim objFSO, oShell,Folder 
     
    Source = "E:\Program\projets\Traitement\Etude\DossierA"
    Destination = "S:\Traitement\Etude\DossierA\Safe"
     
     
    AgeMaximalFichiers = 30
     
    DateSysteme = Date
     
     
    '--------------------------------------------------------------
    'Copie des fichiers de + de 30 jours DossierA n-1 dans le dossier Safe
    '--------------------------------------------------------------
     
    Sub Copie des fichiers
     
    Set Folder = fso.Getfolder(Source)
    For Each File In Folder.Files
       If (DateDiff("d", File.DateCreated, DateSysteme) > AgeMaximalFichiers) Then
    		If File.Attributes And 1 Then File.Attributes = File.Attributes - 1
            File.Copy DestDir(Destination)
    	Else
     
    End If
     
    End Sub
     
    'Traitement de la fonction
     
    Copie des fichiers

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 169
    Points
    17 169
    Par défaut
    Salut

    Je rappelle que je débute en VBS
    Où trouver l'aide en ligne pour VBScript ?, cela te permettrai de trouver la solution plus vite que d'attendre une réponse.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Le nom d'une fonction ou d'une procédure(Sub) ne doit pas contenir d'espace tel que tu l'as fait
    Sub Copie des fichiers
    Ce serait mieux sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub Copie_des_fichiers()
    La ligne 24 est incorrecte, il faut mettre ce car DestDir c'est le dossier destination des fichiers à copier
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  4. #4
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Points : 76
    Points
    76
    Par défaut Merci pour les réponses
    Merci encore pour vos réponses

    Après modifications, je rencontre toujours le même problème,
    les fichiers de + de 30jours ne sont pas copiés dans le dossier de destination.
    J'ai bien des fichiers.bak de plus de 3 mois dans mon dossier source.
    Merci pour votre aide.

    Modifié en vert

    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
    Dim Source
    Dim Destination
    Dim objFSO, oShell,Folder 
     
    Source = "E:\Program\projets\Traitement\Etude\DossierA"
    Destination = "S:\Traitement\Etude\DossierA\Safe"
     
     
    AgeMaximalFichiers = 30
     
    DateSysteme = Date
     
     
    '--------------------------------------------------------------
    'Copie des fichiers de + de 30 jours DossierA n-1 dans le dossier Safe
    '--------------------------------------------------------------
     
    Sub Copie_des_fichiers 
    Set Folder = fso.Getfolder(Source)
    For Each File In Folder.Files
       If (DateDiff("d", File.DateCreated, DateSysteme) > AgeMaximalFichiers) Then
    		If File.Attributes And 1 Then File.Attributes = File.Attributes - 1
            File.Copy DestDir 
           Else
     
    End If
     
    End Sub
     
    'Traitement de la fonction
     
    Copie des fichiers

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Essaie avec ce :
    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
    Dim Source
    Dim Destination
    Dim objFSO, oShell,Fold,Fich 
     
    Source = "E:\Program\projets\Traitement\Etude\DossierA"
    Destination = "S:\Traitement\Etude\DossierA\Safe"
    
    AgeMaximalFichiers = 30
     
    DateSysteme = Date
    
    '--------------------------------------------------------------
    'Copie des fichiers de + de 30 jours DossierA n-1 dans le dossier Safe
    '--------------------------------------------------------------
    Sub Copie_des_fichiers()
    Set Fold = fso.Getfolder(Source)
    For Each Fich In Fold.Files
       If (DateDiff("d", Fich.DateCreated, DateSysteme) > AgeMaximalFichiers) Then
    		If Fich.Attributes And 1 Then Fich.Attributes = Fich.Attributes - 1
                Fich.Copy Destination ' puisque tu l'as déjà définie 
       End If
     
    End Sub
     
    'Traitement de la fonction
     
    Copie_des_fichiers
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  6. #6
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Points : 76
    Points
    76
    Par défaut
    Merci, je crois que cela ne va pas être facile. J'ai toujours le même problème ??


    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
    Dim Source
    Dim Destination
    Dim objFSO, oShell,Fold,Fich 
     
    Source = "E:\Program\projets\Traitement\Etude\DossierA"
    Destination = "S:\Traitement\Etude\DossierA\Safe"
    
    AgeMaximalFichiers = 30
     
    DateSysteme = Date
    
    '--------------------------------------------------------------
    'Copie des fichiers de + de 30 jours DossierA n-1 dans le dossier Safe
    '--------------------------------------------------------------
    Sub Copie_des_fichiers()
    Set Fold = fso.Getfolder(Source)
    For Each Fich In Fold.Files
       If (DateDiff("d", Fich.DateCreated, DateSysteme) > AgeMaximalFichiers) Then
    		If Fich.Attributes And 1 Then Fich.Attributes = Fich.Attributes - 1
              Fich.Copy Destination  puisque tu l'as déjà définie 
       End If
     
    End Sub
     
    'Traitement de la fonction
     
    Copie_des_fichiers

  7. #7
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 169
    Points
    17 169
    Par défaut
    Salut

    Ligne 20 de ton dernier code, il manque le REM pour mettre en commentaire ' puisque tu l'as déjà définie
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Points : 76
    Points
    76
    Par défaut Merci pour la réponse mais IDEM
    Incompréhensible ?
    Merci à tous.


    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
    Dim Source
    Dim Destination
    Dim objFSO, oShell,Fold,Fich 
     
    Source = "E:\Program\projets\Traitement\Etude\DossierA"
    Destination = "S:\Traitement\Etude\DossierA\Safe"
     
    AgeMaximalFichiers = 30
     
    DateSysteme = Date
     
    '--------------------------------------------------------------
    'Copie des fichiers de + de 30 jours DossierA n-1 dans le dossier Safe
    '--------------------------------------------------------------
    Sub Copie_des_fichiers()
    Set Fold = fso.Getfolder(Source)
    For Each Fich In Fold.Files
       If (DateDiff("d", Fich.DateCreated, DateSysteme) > AgeMaximalFichiers) Then
    		If Fich.Attributes And 1 Then Fich.Attributes = Fich.Attributes - 1
              Fich.Copy Destination  ' puisque tu l'as déjà définie 
       End If
     
    End Sub
     
    'Traitement de la fonction
     
    Copie_des_fichiers

  9. #9
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Bon ce code doit pouvoir marcher sans problème
    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
    Dim Source
     Dim Destination
     Dim objFSO, Fold,Fich 
     
     Source = "E:\Program\projets\Traitement\Etude\DossierA"
    Destination = "S:\Traitement\Etude\DossierA\Safe"
     Set objFSO = CreateObject("Scripting.FileSystemObject")
     AgeMaximalFichiers = 30
     
     DateSysteme = Date
     Copie_des_fichiers
    '--------------------------------------------------------------
    'Copie des fichiers de + de 30 jours DossierA n-1 dans le dossier Safe
    '--------------------------------------------------------------
    Sub Copie_des_fichiers()
    Set Fold = objfso.Getfolder(Source)
     For Each Fich In Fold.Files
       If (DateDiff("d", Fich.DateCreated, DateSysteme) > AgeMaximalFichiers) Then
    	 If Fich.Attributes And 1 Then Fich.Attributes = Fich.Attributes - 1
             Fich.Copy Destination & "\" , true 
       End If
     Next
    End Sub
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  10. #10
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Points : 76
    Points
    76
    Par défaut Merci Cela fonctionne parfaitement
    Merci pour votre réponse,
    je viens de tester, et cela fonctionne parfaitement, je l'ai adapté pour ensuite supprimer les fichiers copiés dans le dossierA.

    Merci beaucoup.

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

Discussions similaires

  1. Copier des fichiers de moins de 2 jours
    Par 01Please dans le forum VBScript
    Réponses: 0
    Dernier message: 10/06/2014, 14h09
  2. Utiliser mon tableau pour copier des fichiers
    Par Paloma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 31/10/2006, 18h38
  3. Copier des fichiers d'une machine à une autre
    Par Empty_body dans le forum Réseau
    Réponses: 3
    Dernier message: 29/10/2006, 12h44
  4. copier des fichiers
    Par Daeron dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/11/2004, 14h45
  5. Batch pour copier des fichier
    Par borgfabr dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 09/03/2004, 07h55

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