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

  1. #1
    Nouveau membre du Club
    Inscrit en
    mars 2011
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : mars 2011
    Messages : 81
    Points : 31
    Points
    31

    Par défaut parcourir fichier .pst

    Bonjour,

    Je veux faire un script qui permet de parcourir les fichiers sous C:\%userprofile% et chercher les fichiers .pst afin de les déplacer vers un autre emplacement.

    Src="C:\%userprofile%" ne fonctionne pas. Merci de m'aider

    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
    52
     
    Option Explicit
     
     Dim fso, oFolder, WS, Ret,oSubFold,fich, Src,Dest
     
     Set fso = CreateObject("Scripting.FileSystemObject")
     Set WS = CreateObject("WScript.Shell")
     
     Src="C:\%userprofile%\"
     Dest="H:\" 
     
     Set oFolder = fso.GetFolder(src)
     CreateFolders Dest
     ScanForFile Src, Dest
    ' ===================================
    Sub ScanForFile(srcFolder,DestFolder)
        For Each Fich In oFolder.Files
            On error resume next
    	   If Ucase(fso.GetExtensionName(Fich.Name))="PST" Then
    	      fso.MoveFile Fich.Path, DestFolder & "\" & fso.GetBaseName(Fich.Name) &  ".pst"
    	   End If
    	Next   
     
    	For Each oSubFold In oFolder.SubFolders
    	   For Each Fich In OsubFold.Files 
    	      If Ucase(fso.GetExtensionName(Fich.Name))="PST" Then
    	        fso.MoveFile Fich.Path, DestFolder & "\" & fso.GetBaseName(Fich.Name) &  ".pst"
    	      End If
    	   Next	  
    	Next
    End Sub
    ' =================================
    Function CreateFolders(Fldr)
      Dim OldFolder, tb, I, NextFolder,Root
      If fso.FolderExists(Fldr) Then 
          CreateFolders=Fldr
    	  Exit Function
      End If	  
      tb=Split(fldr,"\") 
      Root="c:\"
      On Error Resume Next
      For I=1 to Ubound(tb)
       If fso.FolderExists(Root & tb(I)) Then
          Set OldFolder=fso.GetFolder(Root & tb(I))
       ElseIf fso.FolderExists(Root & tb(I)) = False Then
          Set OldFolder=fso.GetFolder(Root)
          Set NextFolder = fso.CreateFolder(OldFolder.Path & "\" & tb(I))
       End If
       Root=NextFolder.Path & "\"
      Next
      CreateFolders=NextFolder.Path
    End Function

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

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

    Informations forums :
    Inscription : juillet 2009
    Messages : 2 175
    Points : 5 081
    Points
    5 081

    Par défaut

    Modifie la ligne 9 pour avoir : Src = WS.ExpandEnvironmentStrings("%USERPROFILE%")
    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)
    Vous pouvez consulter mes contributions
    Consultez les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Nouveau membre du Club
    Inscrit en
    mars 2011
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : mars 2011
    Messages : 81
    Points : 31
    Points
    31

    Par défaut

    Bonjour,

    Merci l_autodidacte pour votre réponse. j'ai fait le changement de la ligne 9 mais le script n'a pas fonctionné et n'affiche aucune erreur

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

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

    Informations forums :
    Inscription : juillet 2009
    Messages : 2 175
    Points : 5 081
    Points
    5 081

    Par défaut

    Il faut mettre les 2 instructions On Error Resume Next en commentaire car elles masquent les erreurs éventuelles.

    J'aimerais savoir si les fichiers .pst sont tous dans le dossier "Utilisateur" ou bien dans des sous-dossiers de ce dernier.
    Dans la fonction CreateFolders, la variable root doit être initialisée à root = H:\ car la création de dossiers et sous-dossiers concerne l'endroit où on copierait les fichiers et non pas le lecteur source.
    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)
    Vous pouvez consulter mes contributions
    Consultez les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Nouveau membre du Club
    Inscrit en
    mars 2011
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : mars 2011
    Messages : 81
    Points : 31
    Points
    31

    Par défaut

    Les fichiers .pst sont tous dans des sous-dossiers de dossier "Utilisateur".
    j'ai fait les changements que vous m'avez indiqués, mais je reçois le message d'erreur Permission refusée à la ligne 22.

    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
    52
    53
    Option Explicit
     
     Dim fso, oFolder, WS, Ret,oSubFold,fich, Src,Dest
     
     Set fso = CreateObject("Scripting.FileSystemObject")
     Set WS = CreateObject("WScript.Shell")
     Src = WS.ExpandEnvironmentStrings("%USERPROFILE%")
     Dest="H:\" 
     Set oFolder = fso.GetFolder(src)
     CreateFolders Dest
     ScanForFile Src, Dest
    ' ===================================
    Sub ScanForFile(srcFolder,DestFolder)
        For Each Fich In oFolder.Files
            'On error resume next
    	   If Ucase(fso.GetExtensionName(Fich.Name))="PST" Then
    	      fso.MoveFile Fich.Path, DestFolder & "\" & fso.GetBaseName(Fich.Name) &  
     
    ".pst"
    	   End If
    	Next   
     
    	For Each oSubFold In oFolder.SubFolders
    	   For Each Fich In OsubFold.Files 
    	      If Ucase(fso.GetExtensionName(Fich.Name))="PST" Then
    	        fso.MoveFile Fich.Path, DestFolder & "\" & fso.GetBaseName(Fich.Name) &  
     
    ".pst"
    	      End If
    	   Next	  
    	Next
    End Sub
    ' =================================
    Function CreateFolders(Fldr)
      Dim OldFolder, tb, I, NextFolder,Root
      If fso.FolderExists(Fldr) Then 
          CreateFolders=Fldr
    	  Exit Function
      End If	  
      tb=Split(fldr,"\") 
      Root="H:\"
      'On Error Resume Next
      For I=1 to Ubound(tb)
       If fso.FolderExists(Root & tb(I)) Then
          Set OldFolder=fso.GetFolder(Root & tb(I))
       ElseIf fso.FolderExists(Root & tb(I)) = False Then
          Set OldFolder=fso.GetFolder(Root)
          Set NextFolder = fso.CreateFolder(OldFolder.Path & "\" & tb(I))
       End If
       Root=NextFolder.Path & "\"
      Next
      CreateFolders=NextFolder.Path
    End Function

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

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

    Informations forums :
    Inscription : juillet 2009
    Messages : 2 175
    Points : 5 081
    Points
    5 081

    Par défaut

    La ligne 22 est vide.

    Essaie de supprimer les lignes vides pour avoir l'endroit correct de l'erreur.
    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)
    Vous pouvez consulter mes contributions
    Consultez les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  7. #7
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 803
    Points : 10 815
    Points
    10 815

    Par défaut

    Salut

    l_autodidacte

    Pour infos, le débogueur supprime les lignes vides mais aussi les débuts de colonnes vides elles aussi, c'est pourquoi le renseignement retourné ligne/colonne est à prendre avec des pincettes.
    ProgElecT
    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.
    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.

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

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

    Informations forums :
    Inscription : juillet 2009
    Messages : 2 175
    Points : 5 081
    Points
    5 081

    Par défaut

    Salut ProgElecT

    Mon débogueur, un peu moins paresseux, compte les CR pour qu'il puisse se retrouver. Il compte aussi les espaces avant, prend un vbTab comme étant une unité.
    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)
    Vous pouvez consulter mes contributions
    Consultez les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  9. #9
    Nouveau membre du Club
    Inscrit en
    mars 2011
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : mars 2011
    Messages : 81
    Points : 31
    Points
    31

    Par défaut

    salut l_autodidacte

    l'erreur est devenu à la ligne 19 " Permission refusée".


    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
    Option Explicit
    Dim fso, oFolder, WS, Ret,oSubFold,fich, Src,Dest
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set WS = CreateObject("WScript.Shell")
    Src = WS.ExpandEnvironmentStrings("%USERPROFILE%")
    Dest="H:\" 
    Set oFolder = fso.GetFolder(src)
    CreateFolders Dest
    ScanForFile Src, Dest
    ' ===================================
    Sub ScanForFile(srcFolder,DestFolder)
        For Each Fich In oFolder.Files
            'On error resume next
    	   If Ucase(fso.GetExtensionName(Fich.Name))="PST" Then
    	      fso.MoveFile Fich.Path, DestFolder & "\" & fso.GetBaseName(Fich.Name) & ".pst"
    	   End If
    	Next   
    	For Each oSubFold In oFolder.SubFolders
    	   For Each Fich In OsubFold.Files 
    	      If Ucase(fso.GetExtensionName(Fich.Name))="PST" Then
    	        fso.MoveFile Fich.Path, DestFolder & "\" & fso.GetBaseName(Fich.Name) & ".pst"
    	      End If
    	   Next	  
    	Next
    End Sub
    ' =================================
    Function CreateFolders(Fldr)
      Dim OldFolder, tb, I, NextFolder,Root
      If fso.FolderExists(Fldr) Then 
          CreateFolders=Fldr
    	  Exit Function
      End If	  
      tb=Split(fldr,"\") 
      Root="H:\"
      'On Error Resume Next
      For I=1 to Ubound(tb)
       If fso.FolderExists(Root & tb(I)) Then
          Set OldFolder=fso.GetFolder(Root & tb(I))
       ElseIf fso.FolderExists(Root & tb(I)) = False Then
          Set OldFolder=fso.GetFolder(Root)
          Set NextFolder = fso.CreateFolder(OldFolder.Path & "\" & tb(I))
       End If
       Root=NextFolder.Path & "\"
      Next
      CreateFolders=NextFolder.Path
    End Function

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

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

    Informations forums :
    Inscription : juillet 2009
    Messages : 2 175
    Points : 5 081
    Points
    5 081

    Par défaut

    Il se peut que les droits d'accès à certains sous-dossiers soient restreints ou que l'un des fichiers soit en cours d'utilisation.
    Essaie de modifier ces droits pour les sous-dossiers en question en mettant "Contrôle total"
    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)
    Vous pouvez consulter mes contributions
    Consultez les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/04/2006, 12h18
  2. Afficher le contenu d'un fichier .pst
    Par ATTIA dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 31/03/2006, 18h27
  3. Aide : Décoder, récupérer le contenu d'un fichier .pst
    Par ATTIA dans le forum API, COM et SDKs
    Réponses: 10
    Dernier message: 23/03/2006, 17h11
  4. Parcourir fichier à indenter
    Par BFH dans le forum C
    Réponses: 6
    Dernier message: 26/11/2005, 13h21
  5. [Outlook] Exploiter les fichiers pst
    Par laure_belette dans le forum Autres langages
    Réponses: 1
    Dernier message: 20/04/2005, 08h28

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