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 :

Probleme dans une Variable


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 Probleme dans une Variable
    Bonjour à tous!
    J'ai un probleme dont je connais l'origine sans pour autant savoir le résoudre.
    Je fais une recherche de fichier et j'affecte les résultats dans la variable nom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Set colFiles = objWMIService.ExecQuery _
    ("SELECT * FROM CIM_DataFile WHERE Path = '\\Documents and Settings\\fr41181\\Desktop\\test\\" & user & "\\' AND Extension = 'pst'")
       Set objFSO = CreateObject("Scripting.FileSystemObject")
       For Each objFile in colFiles
       'Wscript.Echo  objFile.Name
       Set objFile = objFSO.GetFile(objFile.Name)
       'dcreation= "Wscript.Echo & objFile.DateCreated"
       datecreation = objFile.DateLastModified
       'nom = objFile.Name
       Next
    Le probleme est que dans la variable nom, il me garde que le dernier resultat de la recherche, ce qui est normal puisque c'est une boucle.
    Donc, ce que j'ignore, c'est comment faire pour que dans ma variable Nom, il me garde tous les resultats.
    J'espere que j'ai été assez claire. Merci!

  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
    La solution est simple : REFLECHIR !!!!!
    Il existe différente solutions à ton problème, tableaux, dictionnaire, collection, concaténation de string, ... Le tout dépend de ce que tu veux faire. Fait des recherhces sur google, refléchit un peu, et reviens nous voir lorsque tu as un bug !!!

  3. #3
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Si la solution est simple, pourquoi ne pas me la donner et au moins, vous serez tranquille et moi aussi. C'est la fin de mon script en plus.
    J'ai déja réflechis, mais j'ai pas de méthodes, ni d'indices.
    Alors, svp, faites un petit effort. Merci!

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    je sais que je ne devrais pas... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom = nom & "|" & objFile.Name
    où | est un séparateur arbitraire
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    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
    Si la solution est simple, pourquoi ne pas me la donner et au moins, vous serez tranquille et moi aussi. C'est la fin de mon script en plus.
    J'ai déja réflechis, mais j'ai pas de méthodes, ni d'indices.
    Alors, svp, faites un petit effort. Merci!
    ben toi aussi fait un effort .. répond à la question à cedric.. sous quelle forme ve tu ta liste de nom de fichier ...?

    omen999 ta donné la solution "concaténation" en mettant tous les noms de fichier dans une variable texte séparé par des le caractére | ... mais si tu nous dis pas ce que tu ve faire de tes noms de fichiers. il nous est difficile de te donner une réponse...
    alors la balle est dans ton camp ..

  6. #6
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Donc, j'inclue ma variable nom dans un fichier texte! Par conséquent, je voudrai que le script m'affiche dans le fichier txt tous les fichiers trouvés.

  7. #7
    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
    Citation Envoyé par bov13
    je voudrai que le script m'affiche dans le fichier txt tous les fichiers trouvés.
    Avant d'afficher, il faudrait qu'ils soient déjà écrits, peut-être...
    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!

  8. #8
    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
    Donc, j'inclue ma variable nom dans un fichier texte! Par conséquent, je voudrai que le script m'affiche dans le fichier txt tous les fichiers trouvés.
    ... ? je comprends rien quelqu'un peu me traaduire ..?...?

  9. #9
    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
    Il n'a jamais etait très clair dans ses réponses. Il veut écrire tous les noms des fichiers, contenu dans sa collection, dans un fichier.

  10. #10
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Voila pour le code complet, sa sera plus clair :
    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
     
    msgbox "Programme de recherche de fichier PST", vbInformation , "Outil PST"
     
    On Error Resume Next 
     
    'Lecture du fichier INI
    Dim objetFSO
    Set objetFSO = CreateObject("Scripting.FileSystemObject")
    Set Flux = objetFSO.OpenTextFile("c:\Documents and settings\fr41181\Desktop\0.ini")
     
    Flux.skipline
    server="Wscript.Echo Flux.readline"
    Flux.skipline
    folder="Wscript.Echo Flux.readline"
    Flux.skipline
    outputfile="Wscript.Echo Flux.readline"
    Flux.skipline
    Flux.skipline
    Flux.skipline
    Flux.skipline
    users = split(Flux.readALL,vbcrlf)
    strComputer = "." 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    For Each user in users
     If user <> "" Then
    'Wscript.echo "Recherche sur  " & "'\\Documents and Settings\\Antoine\\Bureau\\test\\" & user
       Set colFiles = objWMIService.ExecQuery _
    ("SELECT * FROM CIM_DataFile WHERE Path = '\\Documents and Settings\\fr41181\\Desktop\\test\\" & user & "\\' AND Extension = 'pst'")
       Set objFSO = CreateObject("Scripting.FileSystemObject")
       For Each objFile in colFiles
       'Wscript.Echo  objFile.Name
       Set objFile = objFSO.GetFile(objFile.Name)
       'dcreation= "Wscript.Echo & objFile.DateCreated"
       datecreation = objFile.DateLastModified
       nom = objFile.Name
       Next
    End if
     
     
    'Pour creer le fichier texte
    Dim MyTime
    MyTime = Time
    pointvirgule = ";"
    Set FSys = CreateObject("Scripting.FileSystemObject") 
    Set MonFic = FSys.CreateTextFile("G:\GIRAUD\ECHANGE\ADM\ITB\Antoine\" & user) 
    With MonFic 'Pour écrire dans le fichier texte 
    .write ("FRxxxxx")
    .write (pointvirgule)
    .write ("Nom fichier")
    .write (pointvirgule)
    .write ("Date de dernière modification du fichier")
    .writeline (pointvirgule)
    .write (user)
    .write (pointvirgule)
    .write (Nom)
    .write (pointvirgule)
    .write (datecreation)
    .write (pointvirgule)
    End With 
    Next
    Msg = "Écriture réussie dans fichier.txt sur G:\Giraud\echange\adm\itb\" 
    MsgBox(Msg)

  11. #11
    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
    Bah si tu veux ecrire les noms des fichiers les un à la suite des autres sur une seule ligne, utilise la solution d'omen999.

  12. #12
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Exact, j'ai utilisé sa solution et sa fonctionne. Merci!
    Mais, j'ai un autre souci, je crée donc un fichier txt pour chaque user avec les nom des fichiers PST trouvés.
    Mais dans mes fichiers txt, les résultats trouvés se cumulent. Donc, dans le dernier fichier txt de mon dernier users, je me retrouve avec ses fichiers PST à lui mais aussi, tous les fichiers PST trouvés avant.

    J'ai une idée mais j'aimerai savoir si les vôtres correspondent avec la mienne.
    Merci beaucoup

  13. #13
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    le code qui crée le fichier texte doit être inclus dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each objFile in colFiles
    (à la fin de la boucle )
    [edit]grosse bêtise suivre le conseil de cedric
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  14. #14
    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
    Bah c normal, pour le premier user, la variable name est vide, donc tout se passe bien. Mais pour le deuxième name contient tous les noms des fichiers du premier user. Donc on a une accumulation des nom de fichiers.
    Il faudrait qu'à chaque tour de boucle tu réinitialise ta varaible :

  15. #15
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    D'accord Cédric mais vu que je crée les fichiers txt aprés la boucle, je ne vais pas garder en mémoire les anciens résultats de la recherche. Je vais garder que les derniers résultats pour le dernier user.

  16. #16
    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
    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
                    For Each user in users
    If user <> "" Then
    'Wscript.echo "Recherche sur  " & "'\\Documents and Settings\\Antoine\\Bureau\\test\\" & user
       Set colFiles = objWMIService.ExecQuery _
    ("SELECT * FROM CIM_DataFile WHERE Path = '\\Documents and Settings\\fr41181\\Desktop\\test\\" & user & "\\' AND Extension = 'pst'")
       Set objFSO = CreateObject("Scripting.FileSystemObject")
       For Each objFile in colFiles
       'Wscript.Echo  objFile.Name
       Set objFile = objFSO.GetFile(objFile.Name)
       'dcreation= "Wscript.Echo & objFile.DateCreated"
       datecreation = objFile.DateLastModified
       nom = objFile.Name
       Next
    End if
     
     
    'Pour creer le fichier texte
    Dim MyTime
    MyTime = Time
    pointvirgule = ";"
    Set FSys = CreateObject("Scripting.FileSystemObject") 
    Set MonFic = FSys.CreateTextFile("G:\GIRAUD\ECHANGE\ADM\ITB\Antoine\" & user) 
    With MonFic 'Pour écrire dans le fichier texte 
    .write ("FRxxxxx")
    .write (pointvirgule)
    .write ("Nom fichier")
    .write (pointvirgule)
    .write ("Date de dernière modification du fichier")
    .writeline (pointvirgule)
    .write (user)
    .write (pointvirgule)
    .write (Nom)
    .write (pointvirgule)
    .write (datecreation)
    .write (pointvirgule)
    End With 
                             Next
    
    Comme tu peux le voir un tour de boucle comprends l'écriture du fichier.
    Tu ne réinitialise jamais name.
    Si après cette boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For Each objFile in colFiles
       'Wscript.Echo  objFile.Name
       Set objFile = objFSO.GetFile(objFile.Name)
       'dcreation= "Wscript.Echo & objFile.DateCreated"
       datecreation = objFile.DateLastModified
       nom = objFile.Name
       Next
    ta variable nom n'est pas nul (elle n'est pas nul parce que tu vois des valeurs dans le fichier, et la création du fichier est faie apres la boucle)
    alors au tour de boucle suivant, elle n'est toujours pas null.
    Tu devrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    For Each user in users
    name = ""
    If user <> "" Then
    'Wscript.echo "Recherche sur  " & "'\\Documents and Settings\\Antoine\\Bureau\\test\\" & user
       Set colFiles = objWMIService.ExecQuery _
    ("SELECT * FROM CIM_DataFile WHERE Path = '\\Documents and Settings\\fr41181\\Desktop\\test\\" & user & "\\' AND Extension = 'pst'")
       Set objFSO = CreateObject("Scripting.FileSystemObject")
       For Each objFile in colFiles

  17. #17
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Tout fonctionne cédric, merci! Par contre, j'aimerai comprendre certains trucs :

    Moi, j'avais essayé de reinitialiser mes variables nom et datecreation.
    Mais, je l'avais fait dans cette boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For Each objFile in colFiles
       'Wscript.Echo  objFile.Name
       Set objFile = objFSO.GetFile(objFile.Name)
       'dcreation= "Wscript.Echo & objFile.DateCreated"
       datecreation = objFile.DateLastModified
       nom = objFile.Name
       Next
    J'avoue ne pas bien comprendre la difference entre les 2 boucles.

  18. #18
    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
    Elle n'ont rien à voir, dans la premier tu parcours tes users dans ta collection users, et la deuxieme tu parcours tes fichiers dans ta collection de fichier.
    Si tu reinitialise dans la deuxieme boucle (celle du parcours des fichiers), à chaque tour de boucle, donc à chaque fichier appartenant à la collection, donc en gros pour chaque fichier du repertoire, tu va remettre à zero ta variable et donc perdre le nom du précédent fichier, et au final tu te retrouves uniquement avec le dernier nom.
    Tandis que si tu reinitialises dans la premiere boucle tu ne réinitialise que lorsque tu passe à un autre repertoire.

  19. #19
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    D'accord, je te remercie! Bonne aprem!

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

Discussions similaires

  1. probleme appel variable dans une variable
    Par xstier dans le forum Langage
    Réponses: 9
    Dernier message: 18/05/2011, 00h16
  2. Réponses: 1
    Dernier message: 10/02/2010, 15h35
  3. probleme avec une variable dans l'action
    Par you.baddi dans le forum Struts 1
    Réponses: 1
    Dernier message: 08/04/2008, 13h56
  4. Probleme dans une clause like !
    Par adil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 15/07/2003, 16h47
  5. [langage] Extraire un block dans une variable multiligne
    Par |DUCATI| DesMo dans le forum Langage
    Réponses: 9
    Dernier message: 11/02/2003, 14h56

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