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 :

lister une arborescence


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut lister une arborescence
    bojou,
    je tente de lister l'arborescence du repertoire MOB et de recuperer les fichier aux extention .pst puis de les placer dans un fichier txt, sans succer.
    je liste bien les fichiers dans MOB mais pas dans les sous repertoires de MOB


    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
    Dim MyFile,ObjFichier
     
     
    Set ObjFichier=CreateObject("scripting.FileSystemObject")
     
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Extension = 'pst' AND PATH='\\MOB\\'") 
     
    Set MyFile = ObjFichier.OpenTextFile("c:\extention\testFile.txt",2,true)
     
     
     
    For Each objFile in ColFiles
     
     
    	If Colfiles.count = 0 Then
    	Set MyFile = ObjFichier.OpenTextFile("c:\extention\testFile.txt",2,true)
    	MyFile.WriteLine("pas de fichier ")
    	MyFile.close
    	End If
     
     
    MyFile.WriteLine(objFile.name)
    Wscript.Echo objFile.Name
    Next
     
    MyFile.close

  2. #2
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Bojou itou,

    ton script ne va pas chercher dans les arborescences, tu dois pour chaque répertoire trouvé effectuer une nouvelle requete.
    Voici un exemple qui recherche tous les .VBS qui sont dans C:\Temp

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Tag = 0
    strComputer = "."
     
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
     
    strFolderName = "C:\Temp"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.CreateTextFile("C:\Scripts\Test.txt")
     
    Set colSubfolders = objWMIService.ExecQuery _
        ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
            & "Where AssocClass = Win32_Subdirectory " _
                & "ResultRole = PartComponent")
     
    Set colFiles = objWMIService.ExecQuery _
        ("ASSOCIATORS OF {Win32_Directory.Name='" & strFolderName & "'} Where " _
            & "ResultClass = CIM_DataFile")
     
    WScript.Echo strFolderName
    objTextFile.WriteLine strFolderName
    For Each objFile in colFiles
        If objFile.Extension = "vbs" Then
           Tag = 1
           WScript.Echo objFile.FileName 
           objTextFile.WriteLine objFile.FileName 
        End If
    Next
    If Tag = 0 Then
       objTextFile.WriteLine "pas de fichier "
    End If
    Tag = 0
     
    For Each objFolder in colSubfolders
        GetSubFolders strFolderName
    Next
     
    Sub GetSubFolders(strFolderName)
     
        Set colSubfolders2 = objWMIService.ExecQuery _
            ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
                & "Where AssocClass = Win32_Subdirectory " _
                    & "ResultRole = PartComponent")
     
        For Each objFolder2 in colSubfolders2
            strFolderName = objFolder2.Name
     
        Set colFiles = objWMIService.ExecQuery _
            ("ASSOCIATORS OF {Win32_Directory.Name='" & strFolderName & "'} Where " _
                & "ResultClass = CIM_DataFile")             
     
        WScript.Echo strFolderName
        objTextFile.WriteLine strFolderName
        For Each objFile in colFiles
            If objFile.Extension = "vbs" Then
               Tag = 1
               WScript.Echo objFile.FileName 
               objTextFile.WriteLine objFile.FileName 
            End If
        Next
        If Tag = 0 Then
           objTextFile.WriteLine "pas de fichier "
        End If
        Tag = 0
        GetSubFolders strFolderName
        Next
    End Sub
    Après, pour répondre à ton besoin, ce ne devrait pas etre trop dur à adapter...

    A++

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut
    merci je vais bosser sur ce que tu m'a fourni

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut
    merci j'ai une fonction pas mal la voici

    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
     
     
    Function ScanRep(source, FileExt)
    	Dim oFso,objExt
    	Dim odirectory
    	Dim explDirectory
    	Dim ofiles
    	Dim explFile
    	Dim subDirectory
     
    	Set oFso = CreateObject("scripting.fileSystemObject")
     
    	If ofso.FolderExists(source) Then
    		Set odirectory = oFso.GetFolder(source)
    		Set ofiles=odirectory.Files 
    		For Each explFile In ofiles
    			If Ucase(oFso.GetExtensionName(explFile.Name))= FileExt  Then
    			write_log(odirectory.Path &"\" &explFile.Name & ";" & UCase(Right(explFile.Name,4-(Instr(Right(explFile.Name,4),".")))) & ";" & explFile.DateLastModified & ";" & explFile.DateLastAccessed & ";" & Round(explFile.Size/1024))
    			Else
    			End If		
    		Next
     
    	Set subDirectory = odirectory.SubFolders
     
    		For Each explDirectory In subDirectory
    			ScanRep explDirectory.Path, WScript.Arguments(1)
    		Next
    	End If
     
    End Function

  5. #5
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Citation Envoyé par RadPAT Voir le message
    Bojou itou,

    ton script ne va pas chercher dans les arborescences, tu dois pour chaque répertoire trouvé effectuer une nouvelle requete.
    C'est juste
    Citation Envoyé par RadPAT Voir le message
    Voici un exemple qui recherche tous les .VBS qui sont dans C:\Temp
    Ca me parait bien compliqué, non ?
    Et l'utilisation de WMI est bien plus longue à l'exécution que le FSO
    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
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
     
    Dim stRep 'Nom du répertoire à parcourir
    Dim oFSO, oFld, oFile
    Set oFSO = CreateObject("Scripting.FileSystemObject")
     
    stRep = "C:\~Temp"
     
    If oFSO.FolderExists(stRep) Then
      Set MyFile = oFSO.OpenTextFile("c:\testFile.txt",ForWriting, true)
      '-- On traite le répertoire racine
      GetTextFile oFSO.GetFolder(stRep)
     
      '-- Ensuite on boucle sur tous les sous-répertoires
      For each oFld in oFSO.GetFolder(stRep).SubFolders
            GetTextFile oFld
      Next
      MyFile.close
      Wscript.Echo "FIN"
    End If
     
    Sub GetTextFile (Folder)
        For each oFile in  Folder.Files	
            If Right(oFile.Name, 4) = ".txt"  Then
                MyFile.WriteLine(oFile.Name)
                Wscript.Echo oFile.Name
            End If
        Next
    End Sub

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/02/2014, 19h47
  2. [Batch] Lister une arborescence
    Par NorocBzh dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2009, 14h37
  3. Lister les fichiers d'une arborescence
    Par durenthil dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 12/10/2008, 23h46
  4. création d'une arborescence pour lister un repertoire et ses sous-repertoires
    Par fadoua34090 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 10/02/2008, 21h26
  5. créer une arborescence windows sous forme d'arbre java
    Par chupachoc dans le forum Composants
    Réponses: 3
    Dernier message: 01/10/2002, 16h48

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