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 :

Exclure répertoire d'un listage


Sujet :

VBScript

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Exclure répertoire d'un listage
    Via le script ci-dessous je mets dans un fichier texte l'ensemble des répertoires (le path) " procédures " dans un fichier texte mais j'aimerais en plus exclure un répertoire de cette liste, comment doit je faire pour l'exclure ?

    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
    ' Recherche répertoire(s)
    '-------------------------------------------------------------------------------------------------------------
    'Option Explicit
    'On Error Resume Next
     
    Set objWord = CreateObject("Word.Application")
    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set oShell = CreateObject("WScript.Shell")
     
    StrRep = "X:\Gssi"
     
    '------------------------------------------------------------------------------------------------------------- 
    		objFso.CreateTextFile("c:\Temp\Répertoires.log"),True
    		Set ObjFile = objFso.OpenTextFile("c:\Temp\Répertoires.log",8)
     
     
    Sub listingSousDossiersRecur(objListRep, chemin) 
     
        Set Dossier = objFso.GetFolder(chemin) 
        Set cDossier = Dossier.SubFolders 
     
        For Each Dossier in cDossier 
     
    					If Dossier.name="Procédures" Or Dossier.name="PROCEDURES" Then   
    '  	  Wscript.echo Dossier.path
      	  ObjFile.WriteLine Dossier.path
              End If 
        Next
     
     
        For Each oSousRep In objListRep 
            Set objListSousRep = oSousRep.SubFolders 
            Call listingSousDossiersRecur(objListSousRep, chemin & "\" & oSousRep.Name) 
        Next 
     
    End Sub 
     
    '----- Répertoire --------------------------------------------------------------------------------------------
     
    If objFso.FolderExists(StrRep) Then
    Set oRepCourant = objFso.GetFolder(StrRep)
    End If
     
    Set oSousRep = oRepCourant.SubFolders 
    Call listingSousDossiersRecur(oSousRep, oRepCourant.Path)
     
    		ObjFile.close

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Points : 89
    Points
    89
    Par défaut
    Salut,

    Je ne suis pas sûr de comprendre la portée de ta question mais si par exclure tu entends "ne pas l'écrire dans le listing", pourquoi ne pas juste rajouter un If avant l'écriture. Quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Dossier.name="Procédures" Or Dossier.name="PROCEDURES"  And Dossier.name <> "nom_du_dossier_a_exclure" Then
    De plus, je pense que tu pourrais déclarer une variable destinée stocker Dossier.name et la mettre en bas de casse systématiquement ce qui t'éviterai des complications liées aux orthographes...

    Bon courage

    -M@rc0-
    -M@rc0-
    PS : pensez au tag Résolu

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Salut et merci de ta réponse.

    Mais en fait j'attaque directement à la racine d'un répertoire ou tu vois écrit "X:\Gssi" et je veux exclure le répertoire ' toto ' qui se trouve sous "x:\gssi\toto " de l'ensemble du script.

    Si tu peux m'aider je t'en remercie

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Points : 89
    Points
    89
    Par défaut une solution... vite fait
    Par manque de temps, je te propose ce code qui permet de lister les répertoires et les fichiers à partir d'une adresse racine. Il marche parfaitement. A toi de l'adapter "à ta sauce" pour ne prendre que les répertoires ne pas enregistrer. Si vraiment tu bloques fais moi signe.

    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
     
    Dim ShellO: Set ShellO = CreateObject("WScript.Shell")
    Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
    Dim SListe: Dim Schemin: Dim cpt
    cpt = 0
    'Dossier à traiter
        Schemin = "c:\temp"            'Dossier à modifier
    '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.WriteLine
        Fichier.WriteLine "Nombre de Fichiers :  " & cpt
        Fichier.Close
    Set ShellO = Nothing: Set FSO = Nothing: Set Fichier = Nothing
    Set ObjRep = Nothing: Set ObjSubRep = Nothing
    Set ObjRepFind = Nothing: Set ObjSubFile = Nothing
    MsgBox "Script terminé"
     
    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
    				cpt = cpt + 1
        Next
    End Function
    Bon courage à toi !

    -M@rc0-

    PS : Ce code est issu d'une réadaptation perso d'un source que j'avais récupéré il y a quelques temps. Je ne prétend en rien en être l'auteur. Rendons à César ce qui est à César
    -M@rc0-
    PS : pensez au tag Résolu

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Points : 89
    Points
    89
    Par défaut Pour info...
    Tu devrais jeter un oeil à ce topic, il est récent et je pense qu'avec un minimum d'efforts tu devrais pouvoir adapter les codes qui y sont fournis.

    http://www.developpez.net/forums/sho...d.php?t=539864

    -M@rc0-
    -M@rc0-
    PS : pensez au tag Résolu

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci je vais regarder çà

  7. #7
    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 : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set Dossier = objFso.GetFolder(chemin) 
        Set cDossier = Dossier.SubFolders 
     
        For Each Dossier in cDossier
    -> pas beau

    Avec un peu d'imagination dans les noms ont fait des choses plus jolies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set DossierParent = objFso.GetFolder(chemin) 
        Set SousDossier = DossierParent.SubFolders 
     
        For Each Dossier in SousDossier
    C'est mieux et cela t'évitera des confusions futures.

    La première solution proposées par marco_fot_hxc est la plus simple.
    Au passage on peut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Dossier.Name = "Nom Du Dossier A Exclure." Then ....
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

Discussions similaires

  1. [Continuum] Exclure des répertoires SVN
    Par plm12 dans le forum Intégration Continue
    Réponses: 5
    Dernier message: 11/10/2007, 16h16
  2. Réponses: 1
    Dernier message: 17/01/2007, 16h46
  3. [HTACCESS] Empêcher le listage d'un répertoire
    Par benzouille dans le forum Apache
    Réponses: 3
    Dernier message: 14/01/2007, 21h30
  4. Réponses: 4
    Dernier message: 01/08/2006, 08h34
  5. Listage de répertoire surréaliste
    Par ustilago dans le forum Langage
    Réponses: 3
    Dernier message: 20/02/2006, 11h58

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