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 :

Recherche de fichiers


Sujet :

VBScript

  1. #21
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par cedric600
    Pour copier tes resultats sur le disque dur, tu doit les ecrires dans un fichiers dans un répertoire precis.

    Aide toi de ce site pour faire ton script :
    http://www.activexperts.com/activmon.../filesfolders/

    Et de ce site pour comprendre les objets WMI que tu utilise (ex :CIM_DataFile qui fait partie des classes CIM dans les classes WMI) :
    http://msdn.microsoft.com/library/de...stdregprov.asp
    Je ne suis pas sur de te comprendre Cédric. Moi qui début le VBS, j'avoue , c'est pas si facile.
    Donc, tu voudrai dire que je dois copier les résultats de ma recherche dans un fichier (Quel type de fichier, txt?) puis à partir de ce fichier, les copier dans le repertoire.
    Merci de pouvoir m'eclaircir!

  2. #22
    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
    ...
    Ici, je récupere les résultats de la recherche dans une variable "resultat"
    Je souhaiterai copier maintenant ces résultats dans un repertoire sur un pc distant.
    Je te remercie!
    que ve tu copier la liste des fichier .. ? ou le fichier lui même ..?

  3. #23
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par bbil
    que ve tu copier la liste des fichier .. ? ou le fichier lui même ..?
    Ben ma recherche me trouve x fichiers, donc c'est tous les fichiers qu'elles trouvent que je veux copier.
    Merci!

  4. #24
    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
    tu n'as pas besoin de ta variable chaine resultat... remplace la ligne resultat= .. par le code suivant dans ta boucle for:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objFile.Copy "f:\" & objFile.Filename & "." & objFile.extension
    et remplace dans cette ligne f:\ par le répertoire de destination...

  5. #25
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par bbil
    tu n'as pas besoin de ta variable chaine resultat... remplace la ligne resultat= .. par le code suivant dans ta boucle for:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objFile.Copy "f:\" & objFile.Filename & "." & objFile.extension
    et remplace dans cette ligne f:\ par le répertoire de destination...
    Sa fonctionne, juste un petit truc, dans la synthaxe, donc, c'est d'abord, le chemin de destination des fichiers et ensuite le chemin d'origine?
    Car moi, il les copies mais pas au bon endroit, pourtant mon nom de chemin est correct.

  6. #26
    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
    En fait lorsque tu utilises la méthode copy, tu ne precises que le chemin de destination complet (donc aussi avec le nom du fichier et son extension).
    Tu possèdes un objet File qui contient dejà le nom du chemin d'origine.
    Suis juste la synthaxe donné par bbil.
    Quand à ce que j'ai dit :
    cedric600 : Pour copier tes resultats sur le disque dur, tu doit les ecrires dans un fichiers dans un répertoire precis.

    Aide toi de ce site pour faire ton script :
    http://www.activexperts.com/activmon.../filesfolders/

    Et de ce site pour comprendre les objets WMI que tu utilise (ex :CIM_DataFile qui fait partie des classes CIM dans les classes WMI) :
    http://msdn.microsoft.com/library/de...stdregprov.asp
    Je me mélangeais les pinceaux avec d'autres problèmes d'autres personnes, j'avais oublié que tes résultats étaient des fichiers et nom des lignes de textes.
    Mais, si tu ne l'as pas fait, va jeter un coup d'oeil au lien que je t'ai passé, ils t'aideront pour la programmation en VBS.

  7. #27
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Merci!
    J'ai réussi à faire une copie des fichiers que je trouve dans la recherche mais uniquement en local. Lorsque, je désire faire une copie vers un serveur distant, j'ai le message "Permission denied qui s'affiche".
    J'insiste sur le fait qu'au niveau des droits sur les repertoires et tout, tout est correct. Voici mon code :
    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
     
    msgbox "Recherche de documents Word (Ceci peut prendre quelques minutes)",, "Programme de sauvegarde"
    strComputer = "." 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    Set colFiles = objWMIService.ExecQuery _
    ("SELECT * FROM CIM_DataFile WHERE Drive = 'C:' AND Extension = 'doc'")
    For Each objFile in colFiles 
    Wscript.Echo objFile.Name
    Next
    msgbox "Recherche terminée",,"Programme de sauvegarde"
    msgbox "Début de la copie des fichiers",,"Programme de sauvegarde"
    For Each objFile in colFiles
    objFSO.CopyFile objFile.Name, "\\G00577\sav$\" & Nommachine
    Next
    msgbox "Copie des fichiers terminés",,"Programme de sauvegarde"
    Peut-avant ce code, je réalise des copies de répertoires sur le meme serveur. Ya t-il des differences au niveau des droits quand on copie des repertoires ou des fichiers en vbscripts?
    Merci de m'eclaircir!

  8. #28
    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
    Essaye cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each objFile in colFiles
    objFSO.Copy "\\" & Nommachine & "\G00577\sav$\" & Nommachine & "\" & objFile.Name
    Next
    J'ai considéré que "G00577" est un nom de répertoire. Et d'après ton code je crois comprendre que Nommachine est le nom de la machine distante et que tu l'utilises pour copier tes fichiers dans un répertoire ayant ce nom.

    Tu peut aussi copier un répertoire local vers une machine distante grâce à ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    strComputer = "Nom_du_PC_distant_ou_local_ou_adresse_IP"
    Set objWMIService = GetObject("winmgmts:" _
      & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFolders = objWMIService.ExecQuery( _
      "Select * from Win32_Directory where Name = 'c:\\Scripts'")
    For Each objFolder in colFolders
      errResults  = objFolder.Copy("D:\Archive")
      Wscript.Echo errResults
    Next
    as tu les droits sur le serveur distant ?

  9. #29
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    Citation Envoyé par cedric600
    Essaye cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each objFile in colFiles
    objFSO.Copy "\\" & Nommachine & "\G00577\sav$\" & Nommachine & "\" & objFile.Name
    Next
    J'ai considéré que "G00577" est un nom de répertoire. Et d'après ton code je crois comprendre que Nommachine est le nom de la machine distante et que tu l'utilises pour copier tes fichiers dans un répertoire ayant ce nom.

    Tu peut aussi copier un répertoire local vers une machine distante grâce à ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    strComputer = "Nom_du_PC_distant_ou_local_ou_adresse_IP"
    Set objWMIService = GetObject("winmgmts:" _
      & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFolders = objWMIService.ExecQuery( _
      "Select * from Win32_Directory where Name = 'c:\\Scripts'")
    For Each objFolder in colFolders
      errResults  = objFolder.Copy("D:\Archive")
      Wscript.Echo errResults
    Next
    as tu les droits sur le serveur distant ?
    Merci pour ta réponse!
    Non, G00577 est le nom de la machine distante vers laquelle je souhaite envoyer les fichiers.
    Je crée un repertoire sur le G00577 pour y stocker les fichiers. Le nom du repertoire est la variable : Nommachine
    Donc, peux-tu me redonner le code avec les modifs que j'ai indiquées.
    Merci bcp!

  10. #30
    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
    Cela donne cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each objFile in colFiles
    objFSO.Copy "\\G00577\sav$\" & Nommachine & "\" & objFile.Name
    Next
    Mais c'est ce que tu as essayé, tu l'as fait avec copyfile, la je te montre comment tu peut le faire avec copy pour chacun de tes fichiers résultant de ta recherche, donc ton code donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    msgbox "Recherche de documents Word (Ceci peut prendre quelques minutes)",, "Programme de sauvegarde"
    strComputer = "." 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
     
    Set colFiles = objWMIService.ExecQuery _
    SELECT * FROM CIM_DataFile WHERE Drive = 'C:' AND Extension = 'doc'")
    For Each objFile in colFiles
    Wscript.Echo objFile.Name
    objFSO.Copy "\\G00577\sav$\" & Nommachine & "\" & objFile.Name
    Next
    Tu peut aussi copier un répertoire local vers une machine distante grâce à ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    strComputer = "Nom_du_PC_distant_ou_local_ou_adresse_IP"
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFolders = objWMIService.ExecQuery("Select * from Win32_Directory where Name = 'c:\\Scripts'")
    For Each objFolder in colFolders
    errResults = objFolder.Copy("D:\Archive")
    Wscript.Echo errResults[/COLOR][COLOR=black]Next
    J'ai fait une erreur, en fait avec ce code tu copies d'un pc local, un répertoire d'une machine distante vers un autre repertoire de cette même machine distante.

    Ce que je t'ai donné au début de ce message devrait marcher et lorsque tu vois une erreur comme "Permission denied", c'est que tu as un problème de droit. La certainement qui tu ne peut pas copier sur le serveur où tu veux copier le répertoire.

  11. #31
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut
    J'ai testé avec ObjFSO.Copy. Voila, le message d'erreur que j'ai :
    Cet objet ne gère pas cette propriété ou cette méthode : 'objFSO.Copy'

    Par contre, il y a quelque chose qui me surprend :
    Avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objFile.Copy "\\G00577\sav$\ & Nommachine" & objFile.Filename & "." & objFile.extension
    Je n'est aucun message d'erreur mais la copie ne fonctionne pas sauf en local! Bizarre!

    Et avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objFSO.CopyFile objFile.Name, "\\G00577\sav$\" & Nommachine
    J'ai un message d'erreur : "Permission denied" alors que pourtant tous les droits sont bons!


    J'ai fais de la copie de repertoire ds ce script aussi, ca fonctionne bien mais la copie de fichier ne veut pas, pas facile à comprendre, tu as une idée?

    Sinon faut-il pas mieu que je cherche les fichiers et que je les copies 1 par 1 des qu'il en trouve un et pas attendre la fin pour tout copier. Quel est ton avis?

    Je met à jour mon post, la copie des fichiers recherché fonctionne vers un repertoire en local sur ma machine mais c'est à partir du moment que j'envoie la copie vers un pc distant que sa ne fonctionne pas!

  12. #32
    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
    objFile.Copy "\\G00577\sav$\ & Nommachine" & objFile.Filename & "." & objFile.extension
    C'est faux !!!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objFile.Copy "\\G00577\sav$\" & Nommachine & objFile.Filename & "." & objFile.extension
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objFile.Copy "\\G00577\sav$\" & Nommachine & "\" & objFile.Filename & "." & objFile.extension
    C'est bon !!! tu prends celui que tu veux, dans le premier cas, le nom de fichier est compose de nommachine et objet.filename, dans le deuxieme cas, un repertoire ayant pour nom le contenu de nommachine et creer et contient tous tes fichiers.

    Le mieux c'est de copier les fichier des que tu les trouves. C'est ce que j'ai ecrit dans mon precedent message !!!!

  13. #33
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Par défaut Balises de codes .....
    Merci Cedric pour toute tes réponses.
    Ma recherche et la copie fonctionne. J'avais fait une erreur bête dans un chemin d'accès.
    Sinon, j'aimerai que mon script, pendant la recherche et la copie m'affiche une boite de dialogue avec marquer "Veuillez patientez"
    Est-ce possible?
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'Rechercher les fichiers
    msgbox "Recherche de documents Word (Ceci peut prendre quelques minutes)",, "Programme de sauvegarde"
    strComputer = "." 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    Set colFiles = objWMIService.ExecQuery _
    ("SELECT * FROM CIM_DataFile WHERE Drive = 'C:' AND Extension = 'doc'")
    For Each objFile in colFiles 
    'Wscript.Echo objFile.Name
    objFSO.CopyFile objFile.Name, "\\G00577\sav$\" & Nommachine & "\"
    Next
    msgbox "Copie des fichiers terminés",,"Programme de sauvegarde"
    Merci!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Système][fichier] recherche de fichier dans tout le disque dur
    Par helonear dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 15/12/2010, 11h43
  2. Recherche dans fichiers
    Par Tchinkatchuk dans le forum Linux
    Réponses: 2
    Dernier message: 17/06/2005, 11h32
  3. Réponses: 14
    Dernier message: 25/10/2004, 22h33
  4. batch de recherche de fichier ...
    Par Félia dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 29/07/2004, 16h54
  5. Recherche support fichier
    Par sydiop dans le forum Informix
    Réponses: 5
    Dernier message: 18/03/2004, 11h15

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