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 :

déplacement dossiers VBS


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 18
    Points
    18
    Par défaut déplacement dossiers VBS
    Bonjour à tous
    je dois réaliser un script VB afin de déplacer des dossiers d'un disque dur à un autre (demande de mon chef)
    Ces dossiers sont listés sur une feuille de calcul excel et ils sont nombreux (+ de 1200)
    Je ne connais pas grand chose au VBS, mais je me suis déja penché sur le problème, et j'ai commencé à rédiger un petit algorithme.

    Il faudrait que j'arrive à obtenir le nom des dossiers via le fichier excel en passant par le code VBS...

    j'aimerais savoir quelles sont les éléments indispensables qui doivent figurer dans mon code, sachant que je dois tout vérifier à chaque procédure

    Je nage un peu

    Merci de votre aide

    Julien

  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 : 43
    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
    Pour piloter ton fichier excel et récupérer les informations nécessaires, tu dois faire du VBA dans un script VBS.
    Pour tout ce qui est commande pour récupérer des infos sur ue cellule, ou faire autre chose, tu trouveras plus d'info dans le forum VBA.
    Pour créer l'objet excel qui est nécessaire avant de pouvoir ouvrir un classeur et utiliser les méthode VBA : fait une recherche sur ce forum avec en mot clé VBA et/ou Excel, il y a déjà eu des sujets la dessus avec des exemples.
    Pour déplacer des répertoires, la FAQ VBScript pourra t'aider :
    http://vb.developpez.com/faqvbs/?pag...#fsoMoveFolder
    Comment déplacer un répertoire et son contenu ?

    auteurs : Tofalu, bbil

    Il est possible d'utiliser deux techniques différentes pour déplacer un dossier :
    Depuis le FSO directement grâce à la méthode MoveFolder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim oFSO
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    oFSO.MoveFolder "c:\tmp2","c:\tmp3"
    où en utilisant la méthode move de l'objet Folder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim oFSO,oFld
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    set oFld = oFSO.GetFolder("c:\tmp2")
    oFld.Move "C:\tmp3"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Pour piloter ton fichier excel et récupérer les informations nécessaires, tu dois faire du VBA dans un script VBS.
    Pour tout ce qui est commande pour récupérer des infos sur ue cellule, ou faire autre chose, tu trouveras plus d'info dans le forum VBA.
    Pour créer l'objet excel qui est nécessaire avant de pouvoir ouvrir un classeur et utiliser les méthode VBA : fait une recherche sur ce forum avec en mot clé VBA et/ou Excel, il y a déjà eu des sujets la dessus avec des exemples.
    Pour déplacer des répertoires, la FAQ VBScript pourra t'aider :
    http://vb.developpez.com/faqvbs/?pag...#fsoMoveFolder
    Merci de votre aide
    Après m'être penché un peu plus précisément sur le problème, je vais me diriger vers un copier coller de la liste sous excel, pour la mettre dans un fichier texte, car j'ai pu voir les possibilités de VBS avec ce type de fichier.

    Mon algorithme ressemblerait à :

    obtenir le nombre de lignes d'un fichier texte
    --> afin de pouvoir faire un 'for' après

    lire le contenu d'un fichier texte
    --> ligne à ligne

    extraire une partie d'une chaîne
    --> j'extrais la lettre du disque dur

    tester l'existence d'un disque
    --> avec la lettre que j'ai stocké juste avant

    tester l'existence d'un répertoire
    --> le répertoire que je veux déplacer

    tester l'existence d'un disque
    --> la ou je vais déplacer

    déplacer un répertoire et son contenu
    --> tout est dit

    qu'en pensez vous sur le principe ?

  4. #4
    Membre averti
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 341
    Points
    341
    Par défaut
    Salut,

    a premiere vue ton algo est correct.
    Pour faire bien plutot que dire :

    Citation Envoyé par julien0709 Voir le message
    obtenir le nombre de lignes d'un fichier texte
    --> afin de pouvoir faire un 'for' après
    tu peux dire :
    "Lire les lignes du fichier tant qu'on est pas arrivé en fin de fichier"

    ce qui donnerait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Const ForReading = 1
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("C:\Scripts\Mon_Fichier.Txt", ForReading)
     
    Do Until objFile.AtEndOfStream
        strLine = objFile.ReadLine
        Wscript.Echo strLine
    Loop
     
    objFile.Close
    A++

  5. #5
    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 : 43
    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
    je vais me diriger vers un copier coller de la liste sous excel, pour la mettre dans un fichier texte
    Comme tu veux mais c'est faisable assez simplement avec du VBA d'obtenir la liste du fichier excel.

    Mais penchons nous un peu sur ton algo :
    obtenir le nombre de lignes d'un fichier texte
    --> afin de pouvoir faire un 'for' après
    Inutile, la boucle foreach utilisable en VBS te permet de parcours un tableau, une collection, un dictionnaire, ou tout autres types de conteneurs, sans en connaitre la taille. Mais il est vrai que dans le cas des fichiers textes tu ne peux que récupérer qu'une ligne, ou tout le contenu dans une variable de type chaine de caractère. Donc pas de collection, tableaux, ...
    N'empêche toujours inutile, car tu as une propriété AtEndOfStream fourni par l'objet FilesystemObject que tu ne vas pas arrêter d'utiliser pour ce que tu veux faire.
    Il suffit de regarder la FAQ pour l'exemple : http://vb.developpez.com/faqvbs/?pag...#fsoLitFichier

    lire le contenu d'un fichier texte
    --> ligne à ligne
    Regarde le liens précédent.

    extraire une partie d'une chaîne
    --> j'extrais la lettre du disque dur
    Je te propose d'aller voir ici pour savoir comment découper une chaine de caractères :http://vb.developpez.com/faqvbs/?page=II.6 Ho mais c'est encore la FAQ VBScript, ils ont pensés à tout ce qui ont fait cela

    tester l'existence d'un disque
    --> avec la lettre que j'ai stocké juste avant
    La il faut s'amuser avec WMI :
    http://msdn.microsoft.com/en-us/libr...92(VS.85).aspx
    Inspire toi de l'exemple du site suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * From Win32_LogicalDisk Where DeviceID = 'A:'")
     
    For Each objItem in colItems
        intFreeSpace = objItem.FreeSpace
        If IsNull(intFreeSpace) Then
            Wscript.Echo "There is no disk in the floppy drive."
        Else
            Wscript.Echo "There is a disk in the floppy drive."
        End If
    Next
    tester l'existence d'un répertoire
    --> le répertoire que je veux déplacer
    Regarde le lien de mon premier message, la FAQ te propose encore la solution.
    Elle t'explique aussi comment fonctionne WMI, et donne quelques exemples. Mais le mieux reste le lien MSDN que je t'ai fournis.

    tester l'existence d'un disque
    --> la ou je vais déplacer

    déplacer un répertoire et son contenu
    --> tout est dit
    Bah je t'ai passé les liens, tu n'as qu'à refaire ce que tu auras fait plus haut.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    Merci à tous pour votre aide
    mon algo a évolué

    je vais d'abor m'occuper de la vérif de l'emplacement d'arrivée, et si le fichier texte existe

    ensuite mon algo serait :

    ouverture fichier texte
    lire ligne 1 (qui donc est un nom de répertoire)
    on vérifie si ce répertoire existe
    on recherche les bases access de ce répertoire
    on regarde dans les sous dossiers si il y a des bases access aussi
    on déplace les bases de données trouvées
    on boucle pour toutes les lignes du fichier texte

    car il parait que l'algo présenté auparavant était pourri !! (citation de mon tuteur !!)

    sinon j'ai un problème avec les variables, je ne sais pas comment je vais devoir les gérer...

    Merci de votre aide

  7. #7
    Membre averti
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par julien0709 Voir le message
    on recherche les bases access de ce répertoire
    on regarde dans les sous dossiers si il y a des bases access aussi
    Tu ouvres ton fichier texte et tu lis ligne à ligne (regarde mon 1er post), puis à l'aide de l'article How Can I Get a List of All the PDF Files in a Folder and Its Subfolders? tu extrais tes fichiers
    Ok, tu veux des .MDB, ici c'est du .PDF, mais ce ne devrait pas être compliqué

    http://www.microsoft.com/technet/scr...7/hey0608.mspx

    et puis plutot que d'afficher le fichier texte, on va le déplacer :

    remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        For Each objFile in colFiles
            If objFile.Extension = "mdb" Then
                objTextFile.WriteLine objFile.FileName 
            End If
        Next
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        strTarget = "C:\Nom_de_mon_repertoire\"
        For Each objFile in colFiles
            If objFile.Extension = "mdb" Then
                objTextFile.WriteLine objFile.FileName 
                objFSO.MoveFile objFile.Name, strTarget
            End If
        Next
    puis tu lis la ligne suivante jusqu'à la fin de ton fichier.

    ...pas trop pourri à priori

    A++

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    bon j'avance j'avance grace a ces conseils précieux
    donc la mon algo devrait ressembler à ça, en français on va dire :

    Vérifie disc d’arrivée
    Si disque n’existe po, fin
    Vérifie fichier texte
    Si fichier existe pa, fin
    Ouverture fichier texte
    Boucle
    Lecture ligne « n »
    Vérifie si répertoire existe
    Si répertoire existe pa, on sort de la boucle et on va à la ligne d’après
    Recherche base de données access .mdb
    Déplacer chaque base de données trouvé dans le répertoire
    Fin boucle

    combien de fois dois-je déclarer les variable fso etc... ???
    mais j'aimerais savoir quelles variables sont a chak sortie de "fonction" par exemple pour faire la vérif si le disque d'arrivée existe, avec le IF
    quelle est aussi la variable pour la ligne n ? dois-je la créer
    comment dire que l'on veut déplacer chaque fichier qui possède telle extension ?
    il ne me reste que ça (enfin je pense et j'espère)

    sinon pour la structure de base du vbs, je pe trouver ça ou a part dans la faq vbs de ce site ?

  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 : 43
    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
    citation de mon tuteur
    Et il fait quoi ton tuteur ? de l'informatique ? J'ai des doutes

    Non mais c'est que le script que tu fais n'est pas gros et compliqué, donc difficille d'avoir des algos pourris parce qu'il n'y a pas 36 000 façon de faire.

    Une fois que tu as récupérer les infos sur les répertoires, tu ne peux que boucler pour chaque rép à vérifier, et détecter les fichiers que contiennent ces répertoires et sous répertoires.
    Ensuite tu fais ce que tu veux des fichiers et répertoires : suprimes, copies, déplaces, ouvres, change les droits, ...

  10. #10
    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 : 43
    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
    Si répertoire existe pa, on sort de la boucle et on va à la ligne d’après
    Si tu sors de la boucle tu n'iras jamais à la ligne d'après
    Tu ne dois plus rien faire pour cette ligne.
    combien de fois dois-je déclarer les variable fso etc... ???
    1 seul fois -> as tu des notions de programmation objet ?

    mais j'aimerais savoir quelles variables sont a chak sortie de "fonction" par exemple pour faire la vérif si le disque d'arrivée existe, avec le IF


    quelle est aussi la variable pour la ligne n ? dois-je la créer
    Tu n'as pas compris l'exemple de la faq ?

    comment dire que l'on veut déplacer chaque fichier qui possède telle extension ?
    tu testes l'extension du fichier et tu le déplaces.

    sinon pour la structure de base du vbs, je pe trouver ça ou a part dans la faq vbs de ce site ?
    MSDN ou Google pour rechercher des tutoriaux.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Et il fait quoi ton tuteur ? de l'informatique ? J'ai des doutes

    Non mais c'est que le script que tu fais n'est pas gros et compliqué, donc difficille d'avoir des algos pourris parce qu'il n'y a pas 36 000 façon de faire.

    Une fois que tu as récupérer les infos sur les répertoires, tu ne peux que boucler pour chaque rép à vérifier, et détecter les fichiers que contiennent ces répertoires et sous répertoires.
    Ensuite tu fais ce que tu veux des fichiers et répertoires : suprimes, copies, déplaces, ouvres, change les droits, ...
    Je suis actuellement en stage de fin de première année de bts.
    mon tuteur ma demandé d'écrire ce code en vbs pour déplacer les fichiers access des serveurs car ils sont presque plein.
    le coté ludique est que je ne connais pas le vbs donc je nage carrément

    si vous pouvez jetez un oeil au post que j'ai mis il y a 5 mn ... merci

  12. #12
    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 : 43
    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
    si vous pouvez jetez un oeil au post que j'ai mis il y a 5 mn ... merci
    Déjà fait -> juste un question de timing, c pas du msn ici

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Déjà fait -> juste un question de timing, c pas du msn ici
    Bon il faut se lancer, alors même si je me doute que il y a plein d'erreur, au moins j'aurai un avis et de l'aide pour l'améliorer

    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
     
    ''Vérif disque arrivée
    Dim fso
    Set FSO = CreateObject("Scripting.FileSystemObject")
    MsgBox oFSO.DriveExists("G")
    If msgbox <> “oFSO.DriveExists("G")Then end
     
    ''Vérif fichier texte
    MsgBox oFSO.FileExists("c:\tmp\Fichier1.txt")
    If msgbox <> “oFSO.FileExists("c:\tmp\Fichier1.txt")Then end
     
    ''Ouverture fichier texte
    Set Ftxt = FSO.OpenTextFile("Monchemin")
     
    ''Lire ligne à ligne
     
    Const ForReading = 1
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("C:\Scripts\Mon_Fichier.Txt", ForReading)
     
    Do Until objFile.AtEndOfStream
        strLine = objFile.ReadLine
        Wscript.Echo strLine
     
    ''Vérif existence répertoire (qui correspond à la ligne)
    MsgBox "C:\Program Files\Fichiers communs >> " oFSO.FolderExists("C:\Program Files\Fichiers communs")
    MsgBox "C:\Program Files\Fichiers communs\RepBidon >> " oFSO.FolderExists("C:\Program Files\Fichiers communs\RepBidon")
     
    ''Vérif existence répertoire d’arrivée
    MsgBox "C:\Program Files\Fichiers communs >> " oFSO.FolderExists("C:\Program Files\Fichiers communs")
    MsgBox "C:\Program Files\Fichiers communs\RepBidon >> " oFSO.FolderExists("C:\Program Files\Fichiers communs\RepBidon")
     
    ''Recherche fichiers access
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Extension = 'mdb' ")     
    For Each objFile in colFiles
    Wscript.Echo objFile.Name
    Next
     
    ''Déplacement des fichiers access et de ceux présent dans les sous dossiers
      strTarget = "C:\Nom_de_mon_repertoire\"
        For Each objFile in colFiles
            If objFile.Extension = "mdb" Then
                objTextFile.WriteLine objFile.FileName 
                objFSO.MoveFile objFile.Name, strTarget
            End If
        Next
     
    Loop
    objFile.Close

  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 : 43
    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
    bon commençons par le commencement :
    1 - Msgbox n'est pas une variable mais une fonction qui fait apparaitre une message box contenant un texte que tu lui a envoyé en paramètre.
    2 - On ne teste pas si Msgbox est vrai -> stocke le résultat de oFSO.DriveExists("G") dans une variable et teste la variable, son égalité à vrai.
    3 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    “oFSO.DriveExists("G")
    pkoi des guillemets au début et à la fin ? Il n'en faut pas.
    4 - FSO.OpenTextFile("Monchemin") -> est ce vraiment ce que tu as écrit ou bien dans ton script tu as remplacé un Monchemin par un chemin ?
    5 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If msgbox <> “oFSO.DriveExists("G")Then end
    -> c'est faux dans la structure à tous les niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If oFSO.DriveExists("G") <> true Then
    'les actions à faire
    end if
    6 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "C:\Program Files\Fichiers communs >> " oFSO.FolderExists("C:\Program Files\Fichiers communs")
    tu as voulu faire quoi ? Afficher une message box ou faire un test ? on va prendre le plus probable au vu de la ligne -> afficher le retour de la méthode FolderExists -> dans ce cas il faut la concaténer avec la chaine de caractère qui la précédete, et pour cela tu dois utiliser &
    7 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Extension = 'mdb' ")     
    For Each objFile in colFiles
    Wscript.Echo objFile.Name
    Next
     
    ''Déplacement des fichiers access et de ceux présent dans les sous dossiers
      strTarget = "C:\Nom_de_mon_repertoire\"
        For Each objFile in colFiles
            If objFile.Extension = "mdb" Then
                objTextFile.WriteLine objFile.FileName 
                objFSO.MoveFile objFile.Name, strTarget
            End If
        Next
    tu n'as pas compris ce qui ce passais ici. Heu ... comment t'expliquer ??? As tu déjà fais de la programmation dans un autre langage que VBS ? As tu les bases ? Parce que là il faudrait que je te fasse un cours entier, et je n'ai pas le temps de faire ce genre de chose !!!

    8 - Essayes les exemples indépendement, observe ce qu'ils font, et modifies les puis observe ce que provoquent ta modif. Ensuite commence par étape, ne fait pas tout d'un coup, mais fait une chose à la fois, teste là, et une fois que c'est bon, passe à la suite.

    9 - Recherche tous les tutoriaux VBS que tu peux trouver sur le net, parce que tu en as besoin !!!

  15. #15
    Membre averti
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 341
    Points
    341
    Par défaut
    tiens compare ca avec l'exemple des scripting guys de mon 1er post, il n'y avait vraiment pas beaucoup de lignes à ajouter :

    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
     
    On Error Resume Next
     
    strComputer = "."
    strTarget = "C:\Nom_du_repertoire_ou_seront_deplaces_les_scripts\"
    Const ForReading = 1
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("C:\Scripts\Mon_Fichier.Txt", ForReading)
     
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
     
    Do Until objFile.AtEndOfStream
       strLine = objFile.ReadLine
       strFolderName = strLine
     
       Set objTextFile = objFSO.CreateTextFile("C:\Scripts\Resultat_du_script.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")
     
       For Each objFile in colFiles
           If objFile.Extension = "mdb" Then
              objTextFile.WriteLine objFile.FileName & " Ok"
              objFSO.MoveFile objFile.Name, strTarget
           End If
       Next
     
       For Each objFolder in colSubfolders
           GetSubFolders strFolderName
       Next
    Loop
     
    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")
     
        For Each objFile in colFiles
            If objFile.Extension = "mdb" Then
                objTextFile.WriteLine objFile.FileName & " Ok" 
                objFSO.MoveFile objFile.Name, strTarget
            End If
        Next
     
            GetSubFolders strFolderName
        Next
    End Sub
    tu n'as plus qu'a faire les if exists dans tous les sens pour que ce soit beau.

    A++

  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 : 43
    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
    Un petit tuto de developpez pour s'initier au VBS :
    http://tahe.developpez.com/web/vbscript/

    Une aide sur VBS en anglais à télécharger :
    http://www.microsoft.com/downloads/d...displaylang=en

    Et toujours en anglais, l'aide en ligne VBS (certainement la même qu'au dessus mais direct en ligne pas à donwloader.) :
    http://msdn.microsoft.com/en-us/libr...h6(VS.85).aspx

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par RadPAT Voir le message
    tiens compare ca avec l'exemple des scripting guys de mon 1er post, il n'y avait vraiment pas beaucoup de lignes à ajouter :

    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
     
    On Error Resume Next
     
    strComputer = "."
    strTarget = "C:\Nom_du_repertoire_ou_seront_deplaces_les_scripts\"
    Const ForReading = 1
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("C:\Scripts\Mon_Fichier.Txt", ForReading)
     
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
     
    Do Until objFile.AtEndOfStream
       strLine = objFile.ReadLine
       strFolderName = strLine
     
       Set objTextFile = objFSO.CreateTextFile("C:\Scripts\Resultat_du_script.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")
     
       For Each objFile in colFiles
           If objFile.Extension = "mdb" Then
              objTextFile.WriteLine objFile.FileName & " Ok"
              objFSO.MoveFile objFile.Name, strTarget
           End If
       Next
     
       For Each objFolder in colSubfolders
           GetSubFolders strFolderName
       Next
    Loop
     
    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")
     
        For Each objFile in colFiles
            If objFile.Extension = "mdb" Then
                objTextFile.WriteLine objFile.FileName & " Ok" 
                objFSO.MoveFile objFile.Name, strTarget
            End If
        Next
     
            GetSubFolders strFolderName
        Next
    End Sub
    tu n'as plus qu'a faire les if exists dans tous les sens pour que ce soit beau.

    A++
    Je me suis penché sur ce code en arrivant au boulot et je comprends globalement de quoi il retourne il faut que je potasse encore pour bien comprendre le tout
    donc en fait ce zoli code, c'est l'algo que je veux faire depuis le début ??

    pourquoi faudrait il mettre des if pour faire joli ??

    Merci pour votre aide

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par ced600 Voir le message
    bon commençons par le commencement :
    1 - Msgbox n'est pas une variable mais une fonction qui fait apparaitre une message box contenant un texte que tu lui a envoyé en paramètre.
    2 - On ne teste pas si Msgbox est vrai -> stocke le résultat de oFSO.DriveExists("G") dans une variable et teste la variable, son égalité à vrai.
    3 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    “oFSO.DriveExists("G")
    pkoi des guillemets au début et à la fin ? Il n'en faut pas.
    4 - FSO.OpenTextFile("Monchemin") -> est ce vraiment ce que tu as écrit ou bien dans ton script tu as remplacé un Monchemin par un chemin ?
    5 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If msgbox <> “oFSO.DriveExists("G")Then end
    -> c'est faux dans la structure à tous les niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If oFSO.DriveExists("G") <> true Then
    'les actions à faire
    end if
    6 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "C:\Program Files\Fichiers communs >> " oFSO.FolderExists("C:\Program Files\Fichiers communs")
    tu as voulu faire quoi ? Afficher une message box ou faire un test ? on va prendre le plus probable au vu de la ligne -> afficher le retour de la méthode FolderExists -> dans ce cas il faut la concaténer avec la chaine de caractère qui la précédete, et pour cela tu dois utiliser &
    7 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Extension = 'mdb' ")     
    For Each objFile in colFiles
    Wscript.Echo objFile.Name
    Next
     
    ''Déplacement des fichiers access et de ceux présent dans les sous dossiers
      strTarget = "C:\Nom_de_mon_repertoire\"
        For Each objFile in colFiles
            If objFile.Extension = "mdb" Then
                objTextFile.WriteLine objFile.FileName 
                objFSO.MoveFile objFile.Name, strTarget
            End If
        Next
    tu n'as pas compris ce qui ce passais ici. Heu ... comment t'expliquer ??? As tu déjà fais de la programmation dans un autre langage que VBS ? As tu les bases ? Parce que là il faudrait que je te fasse un cours entier, et je n'ai pas le temps de faire ce genre de chose !!!

    8 - Essayes les exemples indépendement, observe ce qu'ils font, et modifies les puis observe ce que provoquent ta modif. Ensuite commence par étape, ne fait pas tout d'un coup, mais fait une chose à la fois, teste là, et une fois que c'est bon, passe à la suite.

    9 - Recherche tous les tutoriaux VBS que tu peux trouver sur le net, parce que tu en as besoin !!!
    Alors... en fait j'ai des notions d'algo et de programmation (j'ai programmé en basic sinon en html php et sql) mais en fait je me sens perdu avec le langage. peut être un pe de panique fortement inutile, puis mon tuteur m'a mis la pression !!!

    mon algo devrait évoluer d'ici peu. j'ai trouvé d souces très intéressantes
    et aussi l'autre personne qui m'aide dans ce topic

    marci beaucoup

  19. #19
    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 : 43
    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
    pourquoi faudrait il mettre des if pour faire joli ??
    si tu veux respecter ton algo il faut vérifier l'existence des répertoires et des disques.

    notions d'algo et de programmation (j'ai programmé en basic sinon en html php et sql)
    Donc aucune programmation orienté objet (POO) ? C'est un problème car même si c'est du pseudo-objet, la plus part des choses que tu utiliseras seront des objets préexistant et déjà instancié sous windows. Que cela soit FileSystemObject pour la gestion des fichiers et des répertoires, ou WMI (Windows Management Instrumentation) pour le reste.

    Tu devrais peut être aller faire un tour sur google, Wikipédia, ou le site de tuto de developpez.com pour avoir apprendre les notions de la programmation orienté objet (POO).

    Est ce que tu connais au moins le concept de structure ?

    Et n'hesite pas à regarder les liens que je t'ai passé, surtout le premier, pour avoir ne serait que la syntaxe des structures conditionnelles, des boucles, de la déclaration des variables.
    Tu peux essayer de comprendre sur le tas un langage inconnu lorsque tu as plus que des notions de programmations, mais dans ton cas ce sera très galère et il vaut mieux que tu apprennes les bases avant d'essayer de faire quoique ce soit, même si ton tuteur te fou la pression (ce qui n'est pas sympas, car lorsque l'on prend un stagiaire on doit accepter le fait qu'il fasse des erreurs ou qu'il ne soit pas capable de faire ce que tu souhaites qu'il fasse).

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strTarget = "C:\Nom_du_repertoire_ou_seront_deplaces_les_scripts\"
    ce sont des fichiers mdb que l'on déplace et non des cripts non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    ça sert à quoi précisément ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set objTextFile = objFSO.CreateTextFile("C:\Scripts\Resultat_du_script.txt")
    je ne comprends pas cette instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       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")
    pourrais-je avoir plus de précision sur cette partie ainsi que sur la sub qui suit ?

    En fait, je veux comprendre ce code, et ne pas le recopier bêtement, car je suis aussi la pour apprendre comme vous l'aurez compris

Discussions similaires

  1. Déplacement dossiers en VBS avec variable user
    Par enermax31 dans le forum VBScript
    Réponses: 2
    Dernier message: 12/09/2013, 15h00
  2. [OL-2007] Extraction pièce jointe dans word et déplacement dossier
    Par th3sorrow dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 09/05/2012, 15h30
  3. Déplacement dossier sharepoint
    Par skud07 dans le forum SharePoint
    Réponses: 2
    Dernier message: 02/02/2009, 09h43

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